Java String 的compareTo()、equals()、== 三种比较运算符的区别总结

我们先来看下方法:

boolean equals(Object anObject)
将此字符串与指定的对象比较。
int compareTo(Object o)
把这个字符串和另一个对象比较。

== 和 equals的区别:

==主要是两个变量值的比较,返回值为true 或者是false。对于普通变量,如:int a=10; int b= 10; a==b,返回为 true。

而对于下面情况:

String a=new String("abc");

String b=new String("abc");

a==b; 返回的则是一个false。这是因为,对于对象的比较是对对象引用的比较,对于a和b ,他们在内存中对应的地址是不一样的,所以 a==b 返回的值是一个false.

==操作符并不涉及对象内容的比较。若要对对象内容进行比较,则用equals. 如果 在本例中,a.equals(b)则返回是一个true值。

总而言之,==是对对象地址的比较,而equals是对对象内容的比较。对于基本数据类型,一般用==,而对于字符串的比较,一般用equals

compareTo():

java.lang包下面的基本数据类型的封装类都提供了该方法,如 Integer,Float,Byte,Short,Character 等

在String 中,则是按照字典顺序进行比较,返回的值是一个int 型。

返回0,含义为相等。

一段示例代码:

public class HelloJavaString{
    public static void main(String args[]){
        String str1=new String("abc");
        String str2=new String("abc");
        //输出==比较
        System.out.println((str1==str2)? "true":"false");//false
        //输出equals比较
        System.out.println((str1.equals(str2))? "true":"false");//true
        //输出compareTo比较
        if(str1.compareTo(str2)==0){
            System.out.println("str1 is equal str2");}//str1 is equals str2
        //输出赋值后的==比较
        str1=str2;
        System.out.println((str1==str2)? "true":"false");//true

    }
}

str2对象赋值给str1之后,str2和str1的引用其实是指向了内存中的同一个位置。所以,再进行==比较时,结果就是true.

上一篇:leetcode-435. 无重叠区间


下一篇:Java设置session超时(失效)的三种方式