java中==和equals
阿新 • • 發佈:2018-07-20
tr1 ring author string類型 print nbsp als 方法 date
/** * @author zhaojiatao * @date 2018/7/19 */ public class equalsLearn { public static void main(String[] args) { /** * 當基本類型的比較時:只能用==,比較值; * 當是引用類型比較時:如果未重寫equals方法,那麽equals用的是來自object類的equals方法,就是==,即比較內存地址 * 當是String類型時,如果是由String str="xxx";這樣直接賦值的話,比較的是字符串的值; * 如果由String str=new String("xxx");方式new出來的對象的話,比較時是用的String類重寫的equals方法; * 註意,toString方法返回的new String()對象; **/ int x=1; int y=1; // 基本類型判斷值是否相等 System.out.println(x==y);// true //java會自動拆箱,由編譯器完成,實際上判斷的是x==1 System.out.println(x==new Integer(1));// true //比較兩個對象的內存地址 System.out.println(new Integer(1)==new Integer(1));// false //使用Integer包裝類重寫的equals方法比較System.out.println(new Integer(1).equals(new Integer(1)));//true String str1="abc"; String str2="abc"; // 比較兩個字符串的值 System.out.println(str1==str2);// true // 比較兩個字符串 使用String類重寫的equeals方法 System.out.println(str1.equals(str2));// true StringBuffer str3=new StringBuffer("efg"); StringBuffer str4=new StringBuffer("efg"); // 比較內存地址 System.out.println(str3==str4);//false // 比較內存地址 System.out.println(str3.equals(str4));// false 由於StringBuffer類沒有重寫Object類的equals,故比較的是內存地址 // toString會生成new String()對象 System.out.println(str3.toString()==str4.toString());//false 比較內存地址 System.out.println(str3.toString().equals(str4.toString()));//true 使用String對象重寫的equals比較 } }
java中==和equals