java中,默认的无参的构造方法的作用是什么?是不是初始化所有变量?
2个回答
展开全部
给你写个例子吧!!!
首先写个类:
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();
但是这个构造方法并没有方法体,
所以,变量的初始化并不是构造函数执行的!!
而且当我自定义一个构造函数后,默认的构造函数也就消失了,又如何为变量初始化?
变量的初始化是在类被装载的时候自动初始化的!!
首先写个类:
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();
但是这个构造方法并没有方法体,
所以,变量的初始化并不是构造函数执行的!!
而且当我自定义一个构造函数后,默认的构造函数也就消失了,又如何为变量初始化?
变量的初始化是在类被装载的时候自动初始化的!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询