Java中的==与equals()
Posted 一步至遥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的==与equals()相关的知识,希望对你有一定的参考价值。
1.基本类型比较,直接可使用==与!=
2.对象的比较, 必须使用equals()方法。
实际上,若使用==来比较对象,其比较的是对象的引用,然而不同的引用永远也不可能相等。此时必须要去比较对象的内容,要使用equals()方法。
public boolean equals(Object obj) { return (this == obj); }
从源码可以看到,equals()默认的还是去比较引用,需要重写此方法,才能表达出想要的结果。如比较字符串时
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String aString = (String)anObject; if (!COMPACT_STRINGS || this.coder == aString.coder) { //coder用于对字节进行编码的编码的标识符,支持的值LATIN1,UTF16
return StringLatin1.equals(value, aString.value); } } return false; }
StringLatin1中重写的equals()
@HotSpotIntrinsicCandidate public static boolean equals(byte[] value, byte[] other) { if (value.length == other.length) { for (int i = 0; i < value.length; i++) { if (value[i] != other[i]) { return false; } } return true; } return false; }
扯远了,就写这么多吧
以上是关于Java中的==与equals()的主要内容,如果未能解决你的问题,请参考以下文章