package test;public class Main { public static void main(String[] args) { Double d = 100d; //ok, 自动装箱 Double.valueOf(100d); Float f = 1.5f; //ok, 自动装箱 Float.valueOf(1.5f); //面试考点 //三元运算符【是一个整体】 1 会提高精度 Object obj1 = true ? new Integer(1) : new Double(2.0); System.out.println(obj1);// 什么? 1.0 Object obj2; if (true) { obj2 = new Integer(1); } else { obj2 = new Double(2.0); } System.out.println(obj2);//1 //输出什么 ? 1, 分别计算 }}

package test;public class Main { public static void main(String[] args) { Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i == j); //False //所以,这里主要是看范围 -128 ~ 127 就是直接返回 /* //1. 如果i 在 IntegerCache.low(-128)~IntegerCache.high(127),就直接从数组返回 //2. 如果不在 -128~127,就直接 new Integer(i) public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } */ Integer m = 1; //底层 Integer.valueOf(1); -> 阅读源码 Integer n = 1;//底层 Integer.valueOf(1); System.out.println(m == n); //T //所以,这里主要是看范围 -128 ~ 127 就是直接返回 //,否则,就new Integer(xx); Integer x = 128;//底层Integer.valueOf(1); Integer y = 128;//底层Integer.valueOf(1); System.out.println(x == y);//False }}

package test;public class Main { public static void main(String[] args) { //示例一 Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2);//F // 示例二 Integer i3 = new Integer(128); Integer i4 = new Integer(128); System.out.println(i3 == i4);//F // 示例三 Integer i5 = 127;//底层Integer.valueOf(127) Integer i6 = 127;//-128~127 System.out.println(i5 == i6); //T // 示例四 Integer i7 = 128; Integer i8 = 128; System.out.println(i7 == i8);//F // 示例五 Integer i9 = 127; //Integer.valueOf(127) Integer i10 = new Integer(127); System.out.println(i9 == i10);//F //示例六 Integer i11 = 127; int i12 = 127; //只有有基本数据类型,判断的是 // 值是否相同 System.out.println(i11 == i12); //T // 示例七 Integer i13 = 128; int i14 = 128; System.out.println(i13 == i14);//T }}
