【发布时间】:2018-05-24 20:25:46
【问题描述】:
所以我有点困惑,如果我只是错过了一些非常明显的东西,但希望这是一个简单的问题
我用两个构造函数创建了一个用户定义的对象,一个默认的无参数构造函数和一个接受整数作为参数的构造函数
然后我在另一个类中创建了一个引用 var 而没有创建对象 所以像这样的
public class A{
int num;
public A{}
public A(int num){this.num = num;}
}
public class B{
A a;
}
所以这就是我的问题所在,在 B 类中,根据我的理解,实例变量 a 应该获得默认值 null 因为它是一个对象引用,而是我得到默认值 0
通过查看我的代码,我知道这种行为是由我的 A 类构造函数中的 int 参数的参数类型引起的
public A(int num){this.num = num;}
为什么会这样?为什么不为空?
谢谢
【问题讨论】:
-
"在 B 类中,根据我的理解,实例变量 a 应该得到一个默认值 null,因为它是一个对象引用,但我得到一个默认值 0" - 不,你不是.它是空的。
num的值为 0。 -
因为对象不能为0。
-
Primitives 默认初始化为 0,除了 boolean 为 false。对象引用被初始化为 null。这就是 Java 为您所做的所有初始化工作。
标签: java type-inference