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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hurryup 高级黑马   /  2013-11-27 19:06  /  1215 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hurryup 于 2013-11-27 21:13 编辑

"字符串".equals(字符窜变量)==>(字符串变量).equals("字符串")吗,为什么?

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

4 个回复

倒序浏览
是的,因为字符串也是一个对象。
equals在String类被重写成比较2个对象是否表示相同字符序列。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
下面是String类的equals():  
public boolean equals(Object anObject)
{ if (this == anObject)
{     return true; }
if (anObject instanceof String)
{     String anotherString = (String)anObject;   
int n = count;   
if (n == anotherString.count)
{  char v1[] = value;  
char v2[] = anotherString.value;
int i = offset;  
int j = anotherString.offset;  
while (n-- != 0)
{      if (v1[i++] != v2[j++])   
return false;  }
return true;     }
} return false;    }
可以看到String类的equals()方法对内容或引用相同返回的结果都是true
我想这段代码对你有帮助

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
其实我是想问这两种写法能不能互换,有什么安全问题?
回复 使用道具 举报
当然不能互换了,"字符串".equals(字符窜变量) 这个是绝对安全的,不会存在任何问题。
而 (字符串变量).equals("字符串")就有可能发生NoPointException,你不能保证字符串变量是否为null,所以写成" 字符串".equals(字符窜变量) 这种形式可以避免处理异常,而且又不会影响比较,何乐而不为呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马