1、== 和 equals的區(qū)別:
==主要是兩個變量值的比較,返回值為true 或者是false。對于普通變量,如:int a=10; int b= 10; a==b,返回為 true。
而對于下面情況:
String a=new String("abc");
String b=new String("abc");
a==b; 返回的則是一個false。這是因?yàn)?,對于對象的比較是對對象引用的比較,對于a和b ,他們在內(nèi)存中對應(yīng)的地址是不一樣的,所以 a==b 返回的值是一個false.
==操作符并不涉及對象內(nèi)容的比較。若要對對象內(nèi)容進(jìn)行比較,則用equals. 如果 在本例中,a.equals(b)則返回是一個true值。
總而言之,==是對對象地址的比較,而equals是對對象內(nèi)容的比較。對于基本數(shù)據(jù)類型,一般用==,而對于字符串的比較,一般用equals
2、對于compareTo(), 在API中,java.lang包下面的基本數(shù)據(jù)類型的封裝類都提供了該方法,如 Integer,Float,Byte,Short,Character 等
在基本數(shù)據(jù)中,compareTo()是比較兩個Character 對象;
在 Boolean中,是用boolean的實(shí)例于其它實(shí)例進(jìn)行比較;
在String 中,則是按照字典順序進(jìn)行比較,返回的值是一個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");
} }
程序的運(yùn)行結(jié)果為:
false
true
s1 is equals s2
true
新聞熱點(diǎn)
疑難解答
圖片精選