但行好事
莫论前程❤

java中的null、undefined和””区别

(1)问题一:

  • null和””的区别 :
String s=null;
// string.trim()就会抛出为空的exception 
String s=""; 
// string.trim()就不会抛出exception

为什么?

答:

NULL: 代表声明了一个空对象,不是一个字符串,可以赋给任何对象

“” : 代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串

String s=null; 只是定义了一个句柄,即你有了个引用,但是这个引用未指向任何内存空间
String s=""; 这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以你可以对它操作。

(2)问题二:

String s1;             //分配了一个内存空间,没存入任何对象 其为一个引用(未初始化的),不是对象

String s2=null;       //null是未分配堆内存空间           空引用(初始化了)  空对象

String s3="a";        //分配了一个内存空间,存了一个字符串对象
System.out.println(s1);  //    出现异常

System.out.println(s2);  //    输出null

System.out.println(s3);  //    输出“a”

答:

主要要理解的是String s; s为一个引用~~它不是对象
第一个是没有初始化的引用;
第二个为空引用; 初始化了,但没存入对象
第三个是在字符串池里写入一个字符’a’,然后用s指向它。
另外,

String s="a"  和 
String s=new String("a");       

是有本质上的区别的 :

  • 前者是在字符串池里写入一个字符’a’,然后用s指向它;
  • 后者是在堆上创建一个内容为”a”的字符串对象。
String str="aaa"; //于栈上分配内存

String str=new String("aaa"); //于堆上分配内存
赞(0) 打赏
未经允许不得转载:刘鹏博客 » java中的null、undefined和””区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏