凡是比較基本類型只能用==,比較結果你看到的字面值相等就會相等,什么叫基本類型? byte,short,int,long,char,float,double這幾種就是基本類型.基本類型不是對象所以不存在用equals比較.
凡是比較引用類型(對象),==比較的是兩個引用是不是指向同一個內存地址,equals比較的是兩個引用的字面值是不是相同,什么叫字面值?你能看到的值就是字面值,比如:String s="abc"; abc就是字面值.
基本類型的包裝類型是對象類型,所以除非兩個相同字面值的引用指向同一內存地址,值才會相等,比如:
Integer a=new Integer(3);Integer b=a;//互相賦值
這樣用等號或equals比較都會得出true,記住一點,凡是兩個引用都用了new去初始化,那==比較的結果都只會是false,互相之間有了賦值,比較結果就為true.
比較不好理解的一點:
String a="abc";
String b="abc";
a==b和a.equals(b);結果都會為true,因為沒有用new去新建對象,其實a和b都指向的是同一個String對象"abc",改成:
String a=new String("abc");
String b=new String"abc");
后==的結果就是false了.總之參照上面的說明,不難理解.