我检查了用于字符串压缩的字符串比较方法,并研究了反编译器中的string类,发现基本上有四种方法
equals()
equalsIgnoreCase()
compareTo()
compareToIgnore()现在我想知道我们使用的两个方法之间的区别,它们是equals()和compareTo(),基本上请说明为什么string类保留了这两个方法。
String tv = "Bravia";
String television = "Bravia";
// String compare example using equals
if (tv.equals(television)) {
System.out.println("Both tv and television contains same letters and equal by equals method of String");
}
// String compare example in java using compareTo
if (tv.compareTo(television) == 0) {
System.out.println("Both tv and television are equal using compareTo method of String");
}输出:-
Both tv and television contains same letters and equal by equals method of String
Both tv and television are equal using compareTo method of String发布于 2013-02-17 14:49:14
字符串实现可比较的接口,然后它绑定到实现compareTo方法。
兼容接口
当对象包含在任何排序的集合中时,它有助于对对象进行排序。那么,当您将字符串放入任何排序的集合(如TreeSet)中时,您将如何告诉java如何对对象进行排序。这就是coompareTo()方法的用武之地。它由集合使用,用于对对象进行排序。
String tv = "Bravia";
String television = "Bravia";
// String compare example using equals
if (tv.equals(television)) {
System.out.println("Both tv and television contains same letters and equal by equals method of String");
}
// String compare example in java using compareTo
if (tv.compareTo(television) == 0) {
System.out.println("Both tv and television are equal using compareTo method of String");
}
if (tv.compareTo(television) < 0){
System.out.println("tv comes before using compareTo method of String");
}
if (tv.compareTo(television) > 0){
System.out.println("tv comes after using compareTo method of String");
}发布于 2013-02-17 14:43:21
equals()返回一个boolean;true/false。字符串A是否等于B?
compareTo()返回一个整数,不仅表示两个字符串是否相等,而且表示哪个字符串比另一个字符串“低”-其中“低”定义为自然的字母顺序。
对于两个字符串a和b,只有当a.compareTo(b)为0时,a.equals(b)才为true。
例如:
String a = "String1";
String b = "String2";a.compareTo(b)将返回一个负整数(不一定是-1!),因为按照字母顺序,字符串"String1“低于"String2";如果按升序对这两个字符串进行排序,"String1”将排在第一位。此外,a.equals(b)将返回false,因为字符串不相等。
但是:
String a = "Example";
String b = "Example";在本例中,a.compareTo(b)将返回0 (因为字符串相等),a.equals(b)将返回true (同样,因为字符串相等)。
关于"ignoreCase“变体:
String a = "String1";
String b = "string1";在本例中,a.compareToIgnoreCase(b)将返回0;这是因为当忽略大小写时,两个字符串是相同的。同样,出于同样的原因,a.equalsIgnoreCase(b)将返回0。
发布于 2013-02-17 14:44:21
equals和equalsIgnoreCase返回一个boolean值,表示“一个等于另一个,或者不相等”
compareTo和compareToIgnoreCase()返回一个三态整数、0、-1或1
如果它们相等,则比较每个顺序的
1如果compareTo*()的参数在顺序上大于您调用的对象,则为
1如果compareTo*()的参数在顺序上小于您对其调用的对象,则为compareTo*()。https://stackoverflow.com/questions/14918660
复制相似问题