String = ""和String = null的区别

在这要先说明下 String str;和String str=null;的关系,代码上来说两者几乎不差什么,但是这里String str=null;多了个指向空的引用

而String str ;却只是定义,String str=null比String str多了初始化的内容。

但是String str=null指向的是空引用,在内存里并没有开辟空间,没有实际的内存。

如果通过str调用String的方法,就会报空指针异常。

而通过""这种方式创建字符串,会保存到String类的字符串池,在内存中是分配了空间的。

也就是说String str=null并没有实例化,而String = ""实例化了,""可以看作是对象。

我们通过小程序来验证下:

String str1 = "";
String str2 = null;
System.out.println(str1.length());
System.out.println(str2.length());

可以看到输出结果是:

0
Exception in thread "main" java.lang.NullPointerException
at com.mytest.StringTrap.main(StringTrap.java:15)

总结来说,String str=null虽然已初始化,但是并未实例化,而String = ""是已经实例化了的,前者在内存中并不存在,而后者是实际存在的。

 

posted on 2015-01-24 20:21  红可可  阅读(2252)  评论(0编辑  收藏  举报

导航