A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂益飞 高级黑马   /  2013-3-24 22:41  /  2332 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在使用equals方法的时候,如下(username是一个参数)
username.equals("admin")和"admin".equals(username)有区别吗?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-25 06:52

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

11 个回复

倒序浏览
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin");当username为空时会抛出异常

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
系统管理员 发表于 2013-3-24 22:49
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin"); ...

又复习了一个知识点,谢谢
回复 使用道具 举报
丘凤光 发表于 2013-3-24 22:51
又复习了一个知识点,谢谢

大家共同进步
回复 使用道具 举报
楼上说的很对,username.equals("admin");当username为空时会抛出异常,这样不利于程序的健壮性,
建议以后都按"admin".equals(username)来写
回复 使用道具 举报
在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

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
当你用参数的equals()方法时,如果参数传进来null,这时就会产生空指针异常。而用“admin”.equals("username")就避免了这种情况的发生!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
123 中级黑马 2013-3-25 17:08:52
8#
他们在比较的时候是调用的前面这个对象的equals()方法,所以为了程序的健壮性,前面应该最好是常量
回复 使用道具 举报
123 中级黑马 2013-3-25 17:09:30
9#
常量是不会产生空指针异常的。
回复 使用道具 举报
系统管理员 发表于 2013-3-24 22:49
有,最好用"admin".equals(username);把常量放前面;这样能防止空指针异常,
username.equals("admin"); ...

学习了:handshake
回复 使用道具 举报
就是为了防止空指针异常的  呵呵
回复 使用道具 举报
楼上的大神们说都都已经很透彻了,着这里也提醒了我, 有时候一个关键字不单单能完成一个方法,还能从某种意义上提高程序的健壮性!~受教了!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马