黑马程序员技术交流社区

标题: 一个有关equals的问题 [打印本页]

作者: 高波    时间: 2013-6-25 20:51
标题: 一个有关equals的问题
本帖最后由 孙百鑫 于 2013-6-27 07:39 编辑

在毕老师讲RuntimeException中NullPointException时,提到了一点:
name.equals("lisi") 跟 "lisi".equals(name)。这两者的区别具体体现在什么地方?
大神们麻烦给个详细点的解答,有点纠结。
  1. class Person
  2. {
  3.         public void checkName(String name)
  4.         {
  5.                 if("lisi".equals(name))//if(name.equals("lisi"))
  6.                         System.out.println("YES");
  7.                 else
  8.                         System.out.println("no");
  9.         }
  10. }
复制代码

作者: 王靖远    时间: 2013-6-25 20:56
搞不懂有什么区别。占楼坐等大神解答
作者: 万琪    时间: 2013-6-25 21:04
。。这个我要去翻java源码了,,,先占座。。呵呵
作者: wangpan    时间: 2013-6-25 21:09
if("lisi".equals(name))//这句话如果传过来的name是null的话,返回false,程序是正常的
if(name.equals("lisi"))//这句话如果传过来的name是null的话,就会报nullPointExcetion,因为null怎么会有equals方法呢。


作者: 万琪    时间: 2013-6-25 21:11
boolean java.lang.String.equals(Object anObject)

equals
public boolean equals(Object anObject)
Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.
Overrides:
equals in class Object
Parameters:
anObject - The object to compare this String against
Returns:
true if the given object represents a String equivalent to this string, false otherwise
当且仅当该参数不为 null
区别就是
"123".equals(null);//false
null..equals("123");//抛 runtime


作者: 405814832@qq.co    时间: 2013-6-25 22:06
就是为了防止空指针异常啊。如果name=null 就会空指针异常的,“lisa".equals(namel),代码更健壮,项目中一般都这么写
作者: 孙百鑫    时间: 2013-6-27 07:39
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e100:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2