Java声明混淆数据类型

时间:2012-02-27 13:54:07

标签: java

我怀疑在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.

3 个答案:

答案 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);在主()内 查看运行程序时放置的初始值。

相关问题