您的位置:首页 > 其它

String s1 ; String s2=null ; String s3=”” ; String s4=new String(“”) ; 的区别。

2015-10-13 17:43 316 查看
Java中String  s1 ;  String  s2=null ;  String  s3=”” ;  String  s4=new String(“”) ; 的区别。

======================================================================

当声明为String  s1时

声明一个字符串对象,分配了一个内存空间,没有进行初始化,没有存入任何对象。

成员变量: 

JAVA为安全原因不允许一个悬挂引用,没有赋值的引用地址一律自动赋值为NULL,以防止访问到任意内存。

局部变量:

局部变量是不会自动初始化的,必须显示地赋初始值。如果没有赋初始值,在用System.out.println(s1);时会报错。 

----------------------------------------------------------------------------------------------------------------------

当声明为String  s2 = null时

声明一个字符串对象,分配了一个内存空间,进行初始化,存入了一个空对象,值为空。

NULL代表声明了一个空对象,根本就不是一个字符串。除了=和==,对空对象做任何操作都不行的,运行时会报异常。

----------------------------------------------------------------------------------------------------------------------

当声明为String  s3 = “” 时

声明一个字符串对象,分配了一个内存空间,初始化,存了一个字符串对象,值为””。

是在字符串常量池(栈中)存入了一个字符串常量,并用引用指向他。

当声明为String  s3 = new  String(“” ) 时

声明一个字符串对象,分配了一个内存空间,初始化,存了一个字符串对象

是在堆中创建一个字符串对象,并把引用放在栈中指向他的首地址。

评论(0)| 引用此答案| 举报 (2011-08-30
14:07)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: