日期:2014-05-20  浏览次数:20712 次

变量空值小问题
写那么多的程序老是碰到nullPointerExcepion的问题,我一直搞不懂比如下面的例子:
String str = null;和string str = "";

这两个到底有没有区别啊???谁能给详细解释一下。。。
------最佳解决方案--------------------
引用:
这个当然有区别,String str =null ;只是声明了String对象的引用,没有为其分配内存,但是String str=“” 意思是创建了一个长度为0的空字符串,在内存中分配了空间。


+1;
String str和String str = null;是一样的。都是声明一个没有对象的引用而已。
另外:String str = new String();
     str = " ";
以及
     String str = " ";
这两种是有一点小区别的,尽管看起来一样。其实还涉及到一个内存分配的概念,这个有必要了解一下一个叫做String Pool的概念,了解一下总归有好处的。
     
------其他解决方案--------------------
public class Test{
public static void main(String[] args) {
String st1=null;
String st2="";
if(st2.equals(st)){
System.out.println("st1="+st1);
}else
{
System.out.println("st2="+st2);
}
}
}

这段代码会输出st2,说明是有区别的。
------其他解决方案--------------------
这个当然有区别,String str =null ;只是声明了String对象的引用,没有为其分配内存,但是String str=“” 意思是创建了一个长度为0的空字符串,在内存中分配了空间。
------其他解决方案--------------------
null 是什么都没有
""   是一个字符串
------其他解决方案--------------------
引用:
这个当然有区别,String str =null ;只是声明了String对象的引用,没有为其分配内存,但是String str=“” 意思是创建了一个长度为0的空字符串,在内存中分配了空间。

 + 1
也就是我们常说的: null 可以指向任何的引用类型,因为他是引用类型,我们可以让他指向任何的对象。
------其他解决方案--------------------
该回复于2012-12-10 08:55:18被管理员删除