• java八大包装类


    1.八大Wrapper类

    在这里插入图片描述


    2.装箱和拆箱

    JDK5之前,需要手动进行装箱拆箱。JDK5之后,自动进行装箱拆箱🎁

    实例:

    // 装箱和拆箱,JDK5之后,自动进行装箱拆箱
    int n = 521;
    // 自动装箱
    // 底层使用的是Integer.valueOf的方式
    Integer integer = n;
    System.out.println(integer);
    // 自动拆箱
    // 底层依然是使用的intValue方法
    int m = integer;
    System.out.println(m);
    ----------------------------------
    输出:
    521
    521
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    经典面试题:以下代码会输出什么信息?

    在这里插入图片描述

    要注意三元运算符是一个整体,所以以最高精度的Double输出结果,为1.0


    3.包装类方法

    String和包装类的互转

    直接上代码:

    // 包装类 --> String
    Integer i = 1314;
    // 方式1
    String s = i + "";
    System.out.println(s);
    // 方式2
    String s2 = i.toString();
    System.out.println(s2);
    // 方式3
    String s3 = String.valueOf(i);
    System.out.println(s3);
    
    // String --> 包装类
    String ss = "5211314";
    Integer j = Integer.parseInt(ss);
    System.out.println(j);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    包装类常用方法

    // 一些常用方法
    System.out.println(Integer.MAX_VALUE);
    System.out.println(Integer.MIN_VALUE);
    System.out.println(Character.isDigit('a')); // 判断是否为数字
    System.out.println(Character.isLetter('a')); // 判断是否为字母
    System.out.println(Character.isUpperCase('a')); // 判断是否为大写
    System.out.println(Character.isLowerCase('a')); // 判断是否为小写
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    现用现查即可🎈

    经典面试题:(如下代码输出什么结果,Integer创建机制面试题)

    在这里插入图片描述

    • 第一个输出:(i == j)输出为False,因为i和j是两个不同的对象
    • 第二个输出:(m == n)赋值底层使用的是Integer.valueOf的方式
      我们来看一下Integer.valueOf的源码,该源码接受一个整形数据i,判断i是否在某一个范围内,在的话就在cache中返回数据,不在的话就新建一个Integer对象返回
    @IntrinsicCandidate
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对于i所处的范围,上面的注解有详细的说明:

    This method will always cache values in the range -128 to 127
    
    • 1

    java会事先创建好一个cache数组,用来缓存-128 - 127的数据,以提升访问效率👍
    所以我们不难得出一个结论,当传入的数据范围在-128 to 127,则通过cache进行返回,否则将会new一个新的对象,故第二个输出为False

    • 第三个输出:(x == y),通过以上,不难看出,输出为True
  • 相关阅读:
    Java并发编程实战(1)
    String的compareTo()方法使用场景介绍及全量ASCII 码表(完整版)
    Linux服务器启动tomcat的三种方式
    Docker 入门到实战教程(一)介绍Docker
    Unity Shader ASE基础效果思路与代码(一):遮罩、硬边溶解、光边溶解、UV扰动
    Eclipse 菜单:深入解析与高效使用技巧
    Vue守卫详解
    Flex布局下文本溢出省略号失效了,Flex自适应宽度显示省略号
    C语言快速入门之内存函数的使用和模拟实现
    WPF入门教程系列三十 ——DataGrid验证
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/125858531