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

    image.png

    1. package test;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Integer i = new Integer(1);
    5. Integer j = new Integer(1);
    6. System.out.println(i == j); //False
    7. //所以,这里主要是看范围 -128 ~ 127 就是直接返回
    8. /*
    9. //1. 如果i 在 IntegerCache.low(-128)~IntegerCache.high(127),就直接从数组返回
    10. //2. 如果不在 -128~127,就直接 new Integer(i)
    11. public static Integer valueOf(int i) {
    12. if (i >= IntegerCache.low && i <= IntegerCache.high)
    13. return IntegerCache.cache[i + (-IntegerCache.low)];
    14. return new Integer(i);
    15. }
    16. */
    17. Integer m = 1; //底层 Integer.valueOf(1); -> 阅读源码
    18. Integer n = 1;//底层 Integer.valueOf(1);
    19. System.out.println(m == n); //T
    20. //所以,这里主要是看范围 -128 ~ 127 就是直接返回
    21. //,否则,就new Integer(xx);
    22. Integer x = 128;//底层Integer.valueOf(1);
    23. Integer y = 128;//底层Integer.valueOf(1);
    24. System.out.println(x == y);//False
    25. }
    26. }

    image.png

    1. package test;
    2. public class Main {
    3. public static void main(String[] args) {
    4. //示例一
    5. Integer i1 = new Integer(127);
    6. Integer i2 = new Integer(127);
    7. System.out.println(i1 == i2);//F
    8. // 示例二
    9. Integer i3 = new Integer(128);
    10. Integer i4 = new Integer(128);
    11. System.out.println(i3 == i4);//F
    12. // 示例三
    13. Integer i5 = 127;//底层Integer.valueOf(127)
    14. Integer i6 = 127;//-128~127
    15. System.out.println(i5 == i6); //T
    16. // 示例四
    17. Integer i7 = 128;
    18. Integer i8 = 128;
    19. System.out.println(i7 == i8);//F
    20. // 示例五
    21. Integer i9 = 127; //Integer.valueOf(127)
    22. Integer i10 = new Integer(127);
    23. System.out.println(i9 == i10);//F
    24. //示例六
    25. Integer i11 = 127;
    26. int i12 = 127;
    27. //只有有基本数据类型,判断的是
    28. // 值是否相同
    29. System.out.println(i11 == i12); //T
    30. // 示例七
    31. Integer i13 = 128;
    32. int i14 = 128;
    33. System.out.println(i13 == i14);//T
    34. }
    35. }

    image.png