我怀疑在Java中为null赋值null。在我的程序中,我已将null赋值为String str_variable = null;
。出于学习目的,我将空整数变量指定为int int_variable = null;
它显示错误Add cast with Integer
。因此,将上述int声明重写为Integer int_variable = null;
。这不显示错误。我不知道这两种声明的原因。
请与我区别。
String str_variable = null;
int int_variable = null; // error.
Integer int_variable1 = null; // no error.
答案 0 :(得分:1)
int
是一个原语,Integer
是一个类。
请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 1 :(得分:1)
int
是基本类型,Integer
是包装类类型扩展Object
类。非引用对象可以是null
,但原语不能。这就是为什么您收到一条错误消息,说明您需要投射。
您可以使用int num = (Integer) null;
之类的行,这就是完成投放的方式,但是当您尝试在代码中的任何位置使用NullPointerException
时,您将获得num
,因为非引用(null)Integer
object 不保存/ wrap 原始值。
答案 2 :(得分:1)
String和Integer都是类,它们不是本机数据类型,这就是为什么你总是可以将null设置为初始值,但是对于int,你必须始终用一个数字初始化它,一个好的找出适当的初始化值的方法是在main()之外创建变量,例如String var1; int var2;然后使用System.out.println(var1);的System.out.println(VAR2);在主()内 查看运行程序时放置的初始值。