2012-02-27 60 views
0

我对Java中的null赋值给变量有疑问。在我的程序中,我将空值分配给字符串变量String str_variable = null;。为了学习的目的,我将空整型变量赋值为int int_variable = null;它显示错误Add cast with Integer。因此,将上面的int声明重写为Integer int_variable = null;。这不会显示错误。我不知道这两种声明的原因。对数据类型的Java声明混淆

请与我区别。

String str_variable = null; 

int int_variable = null; // error. 

Integer int_variable1 = null; // no error. 

回答

1

String和Integer都是类,它们不是原生数据类型,所以它始终可以将null设置为初始值,但对于int,必须始终使用数字初始化它,找到合适的初始化值的好方法是在main()之外创建变量,例如String var1; int var2;然后使用System.out.println(var1);的System.out.println(VAR2);在main() 之内以查看运行该程序时作为初始值放置的内容。

+0

谢谢,我明白了。什么是包装类? java中的其他类和包装类有什么不同? – 2012-02-27 14:05:28

+0

当你试图描述一个包装类时,可以形成一个简单的类比,原生数据类型 - > Class - > Wrapper Class,简单地说就是一个包装类是一个构建在另一个类上的类,或者它是一个类的扩展为另一目的服务 – Primark 2012-02-27 14:20:03

1

int原始类型Integer是延伸Object包装类类型。非引用对象可以是null但基元不能。这就是为什么你会收到一条错误消息,说你需要铸造

您可以使用像int num = (Integer) null;一条线,这是铸造是如何完成的,但是你会得到NullPointerException当您尝试在代码中使用num任何地方,因为非引用(空)Integer对象未持有/包装一个原始值。

+0

谢谢。什么是包装类? java中的其他类和包装类有什么不同? – 2012-02-27 14:01:27

+0

当需要它们的对象时,包装类用于表示原始值(int,long,boolean,..)。 – Juvanis 2012-02-27 14:03:30

+0

感谢我了解它。 – 2012-02-27 14:08:25