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

equlas的理解
今天看马老师的视频,心中一直留有一疑问,代码如下:
  String a="";
  马老师他说:a.equlas("")和"".equlas()有什么不同,各位大虾,求解啊!
  a的值是变量,任何值都可!


------解决方案--------------------
a.equlas("")可能引起空指针异常 则"".equlas() 不存在此问题
------解决方案--------------------
a.equals时有可能a是null. 会引起NullPointerException
"".equals用于判断字符串是否为空字符串时比较常用.
但是要考虑比较对象前后空格的问题.换句话说"".equals(a)时最好搭配a.trim()方法使用.

------解决方案--------------------
String a = null;
a.equals("");
会报NullPointerException
而"".equals(a)则不会。
------解决方案--------------------
a.equals(""); //NullPointerException

------解决方案--------------------
看看api的解释 
equals 方法在非空对象引用上实现相等关系: 

自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 也应返回 true。 
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。 
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。 
对于任何非空引用值 x,x.equals(null) 都应返回 false。