java - 我们可以说非静态 block 作为类的构造函数吗?

标签 java constructor

代码:

class VI{
    {
        System.out.println("Non static block called");
    }
    VI()
    { 
        System.out.println("Constructor block called");
    }
    public static void main(String a[])
    {
        VI v=new VI();
    }
}

代码片段再次包含类,它由非静态 block 和构造函数组成。

因此,当创建类的对象时,将调用非静态 block ,然后调用构造函数。

那么,我们可以说非静态 block 作为类的构造函数吗?

终端命令:

vivek@ubuntu:~/Prime_project/python-SLR-parser$ javac VI.java 
vivek@ubuntu:~/Prime_project/python-SLR-parser$ java VI
Non static block called
Constructor block called
vivek@ubuntu:~/Prime_project/python-SLR-parser$ 

最佳答案

不,初始化 block 不是构造函数。

然而,其中的代码根据the Java Tutorials被复制到每个构造函数中:

The Java compiler copies initializer blocks into every constructor. Therefore, this approach can be used to share a block of code between multiple constructors.

关于java - 我们可以说非静态 block 作为类的构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32755651/

相关文章:

c# - 如何在 Java swings GUI 应用程序中访问和使用 C# dll

constructor - Solidity 解析器错误 : Expected identifier but got '='

c++ - 在 C++98 中实现移动构造函数和移动赋值运算符以获得更好的性能

传递给类构造函数的 C++ 字符串 - 链接器错误

Java - 私有(private)内部类的对象作为外部类构造函数的参数

Java循环引用,糟糕的风格?

java - Android表格布局从手机边缘开始

java - 在这种情况下 Spark 内部是如何工作的?

javascript - Javascript原型(prototype)构造函数说明

java - 在服务器停止之前 GUI 不会启动