黑马程序员技术交流社区
标题:
name.equals("lisi") 跟 "lisi".equals(name)
[打印本页]
作者:
马上都有
时间:
2014-4-16 23:00
标题:
name.equals("lisi") 跟 "lisi".equals(name)
name.equals("lisi") 跟 "lisi".equals(name)。这两者的区别具体体现在什么地方?
大神们麻烦给个详细点的解答
作者:
月光海
时间:
2014-4-16 23:10
很简单,如果你name.equals("lisi") 这句上面获取到的name的值为null的话,就会报空指针异常,因为字符串也是对象,所以也有equals方法,所以也可以调用,“lisi”.equals(null)是不会报异常的,只会返回false
作者:
左拉
时间:
2014-4-17 15:55
本帖最后由 左拉 于 2014-4-18 15:20 编辑
API中强调,a.equals(b)与b.euqals(a)的返回值应该是一样的,所以从作用来讲是无分别的。
但是把已知的字符串去equals变量安全一些。
考虑以下情况:
如果String b=null;那么只要a!=null;
a.equals(b)永远是false.(如果a="";也是false,因为“”表示空字符,至少有地址,null表示什么也不存在)
反过来,b=null,然后null.equals(a)就会抛出NullPointerException(空指针异常)。
所以,为了安全起见,建议把已知的字符串去equals字符串变量,安全啊!
作者:
⒈心只霸占沵
时间:
2014-4-17 16:03
name 是String类型
1,当你的name不为null
两者的返回结果是一样的 如果把name放在前面,是name这个字符串调用自己的equals方法,反过来就是“lisi”调用自己的equals方法
2,当你的name如果为null
“lisi”调用equals方法是跟null比较,不会发生NullPointException ,如果是name调用,则是null去调用equals方法,肯定会包NullPointException
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2