码迷,mamicode.com
首页 > 其他好文 > 详细

""与null的区别

时间:2014-07-28 14:26:23      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:blog   java   代码   div   new   学习   log   字符串   

最近在学习的时候,无意间发现""与null之间有很大区别。按我的总结可以这样区分,“”是一个空的字符串,null是一个空类。看下面几段代码:

String str1 = new String("");
if(str1.equals("")){
System.out.println("equals str1 is 空串");
}
if(str1.equals(null)){
System.out.println(" equals str1 is null");
 输出结果是 equals str1 is 空串,表明 "“并不是null,两者肯定不同。
String str2 = null;
if(str2.equals("")){
System.out.println("equals str2 is 空串");
}
if(str2==null){
System.out.println(" == str2 is null");
}

  

输出结果是:erro。其实这段代码根本无法执行,为什么呢?
 因为str2被初始化为null(空类型)空类型又怎么会有equals方法呢,所以肯定出错。
 删除部分代码后:
String str2 = null;
if(str2==null){
System.out.println(" == str2 is null");
}

这样输出的结果:== str2 is null,所以啊,空类型的字符串要进行判定只能用==换句话说,能进行equals(null)判定的字符串肯定不是null。

String str3;
if(str2 == null){
System.out.println(" == str3 is null");
}

  

输出:== str3 is null。这个输出结果与str2的输出结果原理相同。说明String str3 = null; 与String str3;是等价的。也就是说,没进行过初始化类型的变量就是null类型。
小结:判定空字符串只能用equals方法,判定空类型null只能用==方法,因为空类型的变量没有equals方法,另外说明一下String str = new String("") 和String str = new String() 也是等价的都代表空串的意思。

 

""与null的区别,布布扣,bubuko.com

""与null的区别

标签:blog   java   代码   div   new   学习   log   字符串   

原文地址:http://www.cnblogs.com/think-in-java/p/3872455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!