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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李俊豪 中级黑马   /  2012-10-30 20:54  /  1832 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李俊豪 于 2012-10-30 23:04 编辑

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

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
比较顺序不一样。
s1.equals(s2);   以s1为中心,去s2比较。
s1.equals(s3); 以s1为中心,去s3比较。

s2.equals(s1); 以s2为中心,去s1比较。
s2.equals(s3); 以s2为中心,去s3比较。
你觉得 怎么好比较  就怎么用?区别就在这里

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
"zhangsan".equals(username) 写较好!!
username.equals("zhansan")这样写 也许会出现NullPointerException

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1

查看全部评分

回复 使用道具 举报
username.equals("zhansan")中如果username为null,就会抛异常NullPointerException
"zhangsan".equals(username)中"zhangsan"是一个已存在的字符串,一定可以调用equals方法,即使username为null也不会抛异常
增强了程序的健壮性

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
区别就是:username是一个变量,而zhangsan是一个常量,如果username赋值为空时,调用equals()方法,会抛异常,而用zhangsan调的话就不会抛出异常,因为他是常量在类中可以找得到,所以不会抛异常。我们在写代码时最好的就是把常量放在前面调用方法,这样就不会抛异常了。
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
如果username是对象的引用的话
username.equals("zhansan")是调用父类Object的equals()方法比较的是地址和==一样。
"admin".equals(username)调用的是String的equals方法比较的是内容。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马