我正在阅读Java中的初始化程序
我阅读了几乎所有与Stackoverflows相关的问题,并且我对构造函数的内容非常熟悉,以及非静态(实例)启动器块和静态初始化者是
我想我确实理解他们的执行顺序,以及他们的不同之处
无论如何,有些事情与我有关。这是一个事实,静态字段可以由构造函数和实例初始化程序块初始化
我确实读过doing that is considered bad practice,不是吗?
那么现在,我问自己为什么编译器允许这个动作\功能?
为什么它不会出现任何错误?
也许,它在某种程度上或以某种方式有用.......
代码示例:
public class Potato {
static int x;
{x=10;}
public tuna(int a) {
System.out.println(x);
x=a;
}
}
public class MainClass {
public static void main (String[] args) {
Potato tom = new Potato (6);
System.out.println(tom.x);
Potato nick = new Potato (7);
System.out.println(tom.x);
}
}
输出继电器:
10
6
10
7
答案 0 :(得分:2)
在非静态块中初始化静态变量有什么意义? 您可以在非静态块中修改静态变量,因为静态变量被视为Class变量,非静态块,方法和变量被视为实例变量。我个人会做静态方法,我将从静态块调用初始化静态变量。