我希望有人来验证我的理解是否正确。 我有一些像这样的代码:
public class A {
int a;
int b;
public A(int a)
{
this.a=a;
}
现在A()是我定义的构造函数,这意味着它不是默认的构造函数。 所以,如果我有一个扩展这个类的子类。
public class B extends A{
public B()
{
super(15);
}
}
如果我在子类中打印a和b的值,我看到a的值为15,b的值为0.当我在A中明确定义了一个构造函数时,这意味着它不是默认的构造函数那么A类中未初始化的字段如何得到0的值?
答案 0 :(得分:6)
int
是原始类型,不能是null
。默认值为0
。
答案 1 :(得分:0)
relevant part of the JLS表示如果未指定类字段,则会自动使用默认值 初始化
。答案 2 :(得分:0)
在这种情况下,未初始化的字段b在java中获取int的默认值0。
答案 3 :(得分:0)
基本类型的默认值由Object
类的构造函数设置。初始化B
的对象时,它在这里被调用..
public A(int a)
中的,super();
首先自动执行,因此b
因0
的{{1}}构造函数而获得Object
在这里打电话。
来源:完整参考JAVA \ m /