快速问题CompareTo与Equals!比较字符串或对象?
我比较字符串,我应该用等于或的compareTo? 因为我虽然等于区分String类型 的2个对象,而不仅仅是它们的价值......
这可能会导致问题,因为:
String a = new String("lol");
String b = new String("lol");
即使它们具有相同的值两个不同的对象?
什么在性能和精度方面与平等的compareTo实现之间到底有什么不同?
快速问题CompareTo与Equals!比较字符串或对象?
我比较字符串,我应该用等于或的compareTo? 因为我虽然等于区分String类型 的2个对象,而不仅仅是它们的价值......
这可能会导致问题,因为:
String a = new String("lol");
String b = new String("lol");
即使它们具有相同的值两个不同的对象?
什么在性能和精度方面与平等的compareTo实现之间到底有什么不同?
所有==
首先比较了引用,以查看是否两个对象是相同的(所以==
是在对象上)。
然后String.equals()
验证两个字符串的内容是否相等,而String.compareTo()
是寻求两个字符串的内容的区别。
所以以下两个测试是等效的:
String str = "my string";
if (str.equals("my second string")) {/*...*/}
if (str.compareTo("my second string")==0) {/*...*/}
但是,因为String.equals
首先做一个参考检查,对null
使用时是安全的,而String.compareTo
会抛出一个NullPointerException
:
String str = "my string";
if (str.equals(null)) {/* false */}
if (str.compareTo(null) {/* NullPointerException */}
你尝试了吗?
String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
System.out.println(a.compareTo(b)); // 0
有啥区别?在使用equals和compareTo之间? –
@NavySeal - 你有没有读过javadoc? –
是的,但林混淆...如何比较两个对象字符串是不同的? –
String a = new String("lol");
String b = new String("lol");
System.out.println(a == b); // false. It checks references of both sides operands and we have created objects using new operator so references would not be same and result would be false.
System.out.println(a.equals(b)); // true checks Values and values are same
System.out.println(a.compareTo(b)); // checks for less than, greater than or equals. Mainly used in sortings.
的可能重复的[Java字符串:的compareTo()与equals()方法](http://stackoverflow.com/questions/1551235/java-strings-compa雷托-VS-等于) –
有趣,我怎么弄-6rep而其他人得到+ 41rep –
嗨,你还可以检查此链接在这里http://www.leepoint.net/data/expressions/22compareobjects.html –