为什么像 Boolean 等包装类的对象直接取值而不初始化但不允许对象的属性?
代码:
class TestByte{
public static void main(String[] a) {
Byte b=125; System.out.println(b);
}
}
为什么像 Boolean 等包装类的对象直接取值而不初始化但不允许对象的属性?
代码:
class TestByte{
public static void main(String[] a) {
Byte b=125; System.out.println(b);
}
}
好吧,Abhishek,构造器初始化对象的目的是做任何准备工作以使该对象生效。由于包装类和 String 只保存数据,初始化它们的唯一准备是为它们提供必要的值。所以,我们实际上不需要为它们调用new。
你的意思是为什么你可以使用方法而不是通过使用 Byte b = 25 而不是将 Byte 对象显式初始化为 Byte b = new Byte(25) 而从包装类对象中抛出 NullPointerException ?
好吧,如果您确实是这个意思,那是因为从 java 1.5 开始,可以在不显式实例化对象的情况下将值分配给 Wrapper 引用。这称为自动装箱,它隐式创建包装对象实例并为其分配值。
这样:Byte b = 25
它与 相同Byte b = new Byte(25)
。如果您分配一个字节范围内的值,则拳击版本会影响比较包装器值的结果。