凡是比较基本类型都只能用==,比较的结果就是眼睛能看到的字面量,基本类型只有8种,byte,short,int,long,char,float,double,记住String不是基本类型。基本类型不是对象,所以不存在使用equals比较。
凡是比较引用类型(对象)的时候==和equals的使用是有区别的。==的使用是比较两个引用(对象)是不是指向同一个内存地址,equals比较的是字面量是不是一致。
基本类型的包装类是对象类型,所以除非两个相同字面量的引用指向同一个内存地址,值才会相等。
String str1 = "123abc";
String str2 = "123abc";
System.out.println(str1 == str2);//true
String str3 = "123" + "abc";
System.out.println(str1 == str3);//true
String str4 = new String("abc");
String str5 = new String("123");
String str6 = str4 + str5;
System.out.println(str1 == str6);//false
String 字面量不可改变 +两边连接的字面量会直接认为是一个完整的,不会创建新对象