Java:比较运算符compareTo()、equals()、==之间的区别与应用总结

来源:互联网 发布:粤贵银交易软件下载 编辑:程序博客网 时间:2024/04/28 22:01

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");       }     }

程序的运行结果为:

falsetrues1 is equals s2true

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

0 0