黑马程序员技术交流社区
标题:
关于equals的小问题
[打印本页]
作者:
hurryup
时间:
2013-11-27 19:06
标题:
关于equals的小问题
本帖最后由 hurryup 于 2013-11-27 21:13 编辑
"字符串".equals(字符窜变量)==>(字符串变量).equals("字符串")吗,为什么?
作者:
HAnG
时间:
2013-11-27 19:13
是的,因为字符串也是一个对象。
equals在String类被重写成比较2个对象是否表示相同字符序列。
作者:
王贺
时间:
2013-11-27 19:22
下面是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
我想这段代码对你有帮助
作者:
hurryup
时间:
2013-11-27 20:31
其实我是想问这两种写法能不能互换,有什么安全问题?
作者:
衣带赞
时间:
2013-11-27 20:47
当然不能互换了,"字符串".equals(字符窜变量) 这个是绝对安全的,不会存在任何问题。
而 (字符串变量).equals("字符串")就有可能发生NoPointException,你不能保证字符串变量是否为null,所以写成" 字符串".equals(字符窜变量) 这种形式可以避免处理异常,而且又不会影响比较,何乐而不为呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2