2014-01-08 39 views
-2

(分配null和不分配null) 在java中的内存和所有的区别是什么?分配null和不分配null有什么区别?

String str;  
String str = null; 
+3

@TheLostMind只有局部变量才为真。类成员自动初始化为空值 – Blackbelt

+0

@blackbelt - 看起来不像类/实例级别声明...所以我认为我只是给“本地”或“方法”级范围答案.. :) – TheLostMind

+0

嗯,我不要这个问题应该冷静下来。 –

回答

2

如果String str;是一个局部变量(不是类成员),它不会被初始化。编译将失败,并且str未初始化。

如果str是一个类的实例或静态成员,则其默认值为null,因此没有区别。

...就内存和所有?

没有什么区别。

0
1. Inside a method if the variable is a local variable : 

在编译器会抛出错误,指出海峡未初始化(编译时)...在第二第一种情况下,它不会......除此之外,没有任何区别...

2. If str is at class level : 

这没有什么区别(感谢@Ruchira这个..)

0

如果它是一个类变量,没有区别。如果它是一个本地/方法变量,那么如果仅执行String str;,并且如果稍后尝试使用str(因为它未初始化),则会发生编译时错误。

0

如果您正在使用String str;内部方法然后当您尝试使用str而不初始化它时,我们会收到编译错误。但是当你宣布海峡作为一个实例变量,即使艰难,如果你不初始化它的默认的构造函数将实例变量海峡初始化为因为str为String类型的这是一个非原始数据类型 java中的数据类型。

相关问题