Java:比较运算符compareTo()、equals()、==之间的区别

来源:互联网 发布:车牌选号软件 编辑:程序博客网 时间:2024/06/06 08:32

==用来比较地址,equals用来比较值

compare to在基本数据中,compareTo()是比较两个Character 对象;

在 Boolean中,是用boolean的实例于其它实例进行比较;

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


1、== 和 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

2、对于compareTo(), 在API中,Java.lang包下面的基本数据类型的封装类都提供了该方法,如 Integer,Float,Byte,Short,Character 等

在基本数据中,compareTo()是比较两个Character 对象;

在 Boolean中,是用boolean的实例于其它实例进行比较;

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

贴一段代码

public class Test{
   public static void main(String args[]){

    String s1=new String("abc");

    String s2=new String("abc");

    System.out.println((s1==s2)? "true":"false");

    System.out.println((s1.equals(s2))? "true":"false");

    if(s1.compareTo(s2)==0){

    System.out.println("s1 is equal s2");}

    s1=s2;

    System.out.println((s1==s2)? "true":"false");

       }
     }

程序的运行结果为:

false

true

s1 is equals s2

true

这里需要说明的一点,s2对象赋值给s1之后,s2和s1的引用其实是指向了内存中的同一个位置。所以,再进行比较时,就是true.

0 0