黑马程序员技术交流社区

标题: 关于equals的问题!!麻烦来看看!! [打印本页]

作者: 聂益飞    时间: 2013-3-24 22:41
标题: 关于equals的问题!!麻烦来看看!!
在使用equals方法的时候,如下(username是一个参数)
username.equals("admin")和"admin".equals(username)有区别吗?
作者: 魏福伟    时间: 2013-3-24 22:49
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin");当username为空时会抛出异常
作者: 丘凤光    时间: 2013-3-24 22:51
系统管理员 发表于 2013-3-24 22:49
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin"); ...

又复习了一个知识点,谢谢
作者: 魏福伟    时间: 2013-3-24 22:54
丘凤光 发表于 2013-3-24 22:51
又复习了一个知识点,谢谢

大家共同进步
作者: HM马明宇    时间: 2013-3-25 01:17
楼上说的很对,username.equals("admin");当username为空时会抛出异常,这样不利于程序的健壮性,
建议以后都按"admin".equals(username)来写
作者: 仉钰    时间: 2013-3-25 07:48
在Object 类 的 equal 方法说明中有关于对称性的描述
It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
对于任何的非空引用x 和 y  当 x.equal(y) 返回true  则 y.equal(x) 也要返回true

作者: 朱德帅    时间: 2013-3-25 14:23
当你用参数的equals()方法时,如果参数传进来null,这时就会产生空指针异常。而用“admin”.equals("username")就避免了这种情况的发生!
作者: 123    时间: 2013-3-25 17:08
他们在比较的时候是调用的前面这个对象的equals()方法,所以为了程序的健壮性,前面应该最好是常量
作者: 123    时间: 2013-3-25 17:09
常量是不会产生空指针异常的。
作者: Dev_Lzf    时间: 2013-3-25 23:22
系统管理员 发表于 2013-3-24 22:49
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin"); ...

学习了:handshake
作者: 程宁宁    时间: 2013-3-25 23:35
就是为了防止空指针异常的  呵呵
作者: 芦子骐    时间: 2013-3-25 23:39
楼上的大神们说都都已经很透彻了,着这里也提醒了我, 有时候一个关键字不单单能完成一个方法,还能从某种意义上提高程序的健壮性!~受教了!!




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