以下几种类成员声明和初始化之间的确切区别是什么?
选项1:
public class MyClass {
private int myInt = 1;
}
选项2:
public class MyClass {
private int myInt;
{
myInt = 1;
}
}
最佳答案
如果是
public class MyClass {
private int myInt;
{
myInt = 1;
}
}
每次构造对象时,实例初始化块都会在构造函数之前运行。
在第二种情况下,它是相同的:)
结论:没什么区别(但是值得知道当构造一个对象时会发生什么)。
请参见docs - Initializing Instance Members:
Java编译器将初始化程序块复制到每个构造函数中。
因此,此方法可用于在两个之间共享一个代码块
多个构造函数。
请注意,您可以使用
javap -c
反编译类文件并进行验证。关于java - 两个类成员声明和初始化之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25378829/