不会存在的 写个小例子 如下
public class Test{
public int x;
public String y;
public static void main(String[] args){
Test test = new Test();
System.out.println("x = "+test.x);
System.out.println("y = "+test.y);
}
}
保存为Test.java
这里并没有声名构造方法,所以它存在着默认的构造方法.
用javac Test.java 命令将其编译,得到Test.class文件!
然后用java Test 命令将其执行,输出的结果为:
x = 0
y = null
然后用javap Test 命令将Test.class文件反编译,得到如下结果:
public class Test extends java.lang.Object{
public int x;
public java.lang.String y;
public Test();
public static void main(java.lang.String[]);
}
可以看到,在类中多出来一个构造方法public Test();
但是这个构造方法并没有方法体,
所以,变量的初始化并不是构造函数执行的!!
而且当我自定义一个构造函数后,默认的构造函数也就消失了,又如何为变量初始化?
变量的初始化是在类被装载的时候自动初始化的!! |