int a = 10 ;
int b = 10 ;
int c = 200 ;
int d = 200 ;
Integer i1 = 10 ;
Integer i2 = 10 ;
Integer i3 = 200 ;
Integer i4 = 200 ;
String str1 = "abc%%%%%%";
String str2 = "abc%%%%%%";
String s1 = new String("abc%%%%%%");
String s2 = new String("abc%%%%%%");
//首先:==比较的是基本类型时,比较值;比较的是引用类型时,比较的时内存地址值;
//第二:String new对象后,会在对内存中开辟对象空间。不new,从常量池取
//第三:Java的8种基本类型(Byte, Short, Integer, Long, Character,
// Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池,
// 但是它们只在大于等于-128并且小于等于127时才使用常量池。
//第四:关于String:
// 1.单独使用""引号创建的字符串都是常量,编译期就已经确定存储到String Pool中;
//
// 2,使用new String("")创建的对象会存储到heap中,是运行期新创建的;
//
// 3,使用只包含常量的字符串连接符如"aa" + "aa"创建的也是常量,编译期就能确定,已经确定存储到String Pool中;
//
// 4,使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在heap中;
System.out.println(i1 == i2);//true
System.out.println(i1.equals(i2));//true 常量池
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//true
System.out.println(str1 == str2);//true
System.out.println(str1.equals(str2));//true
System.out.println(a == b);//true
System.out.println(c == d);//true