如何调用java中的默认构造函数?

时间:2015-06-10 22:06:22

标签: java default-constructor

lastKeyFrameTime

O / p是:public class Hello { int i; char ch; Hello(int x){ i=x; } Hello(char c){ ch=c; } public static void main(String[] args) { Hello h=new Hello(1); System.out.printf("value of i is %d"+"value of ch is %c",h.i,h.ch); //Hello h=new Hello('T'); //System.out.printf("value of i is %d"+"value of ch is %c",h.i,h.ch); }

我的问题是为什么ch值没有被初始化? 而如果另一种情况是O / p是:value of i is 1value of ch is 为什么在这种情况下我被初始化。??

4 个答案:

答案 0 :(得分:2)

您的班级有两个构造函数,一个用于int,另一个用于char。无论您使用哪个来初始化类的实例,另一个变量都将使用它的默认值。

  • 类型int默认为0
  • 类型char默认为\u0000null字符,正如here所述。

因此,当您致电:

Hello h=new Hello(1);

您的结果是有效的:

h.i = 1;
h.ch = '\u0000';

致电:

Hello h=new Hello('T');

有效地导致:

h.i = 0;
h.ch = 'T';

答案 1 :(得分:1)

默认情况下,Java将int初始化为0,将char初始化为null字符。因此,System.out.println会使ch看起来好像没有输出,但技术上已经初始化了。在第一种情况下,第二个构造函数不会运行,因为Hello是通过传入一个调用第一个构造函数的int参数创建的,因此ch不会设置为任何东西。注释代码的行为方式相同,但由于我默认初始化为0,因此System.out.println显示value of i is 0 value of ch is T

答案 2 :(得分:1)

根据this,int的默认值为0,char的默认值为'\ u0000'(这只是null),这就是你所看到的。

答案 3 :(得分:0)

在Java中,int基本类型的默认值为0,而默认字符为'\ u0000',即空字符。这就是为什么你没有从你的int构造函数中获得ch的值的任何可识别的原因。