0
点赞
收藏
分享

微信扫一扫

包装类的顶级理解

以前干嘛去了 2022-01-21 阅读 62

类的关系图:
在这里插入图片描述

包装类


一、分类

基本数据类型 — 包装类
byte — Byte
boolean — Boolean
short — Short
char — Character
int — Integer
long — Long
float — Float
double — Double

除了Integer 和Character 外,其它六个类类名和基本数据类型一致,只需将第一个字母大写 即可

二、作用

有时方法需传递一个Object类变量时,传递int类型编译不通过,这时需为包装类
例:
public void test(Object o){
}
需传递数值9时为:
test(new Integer(6));

  1. 可以通过包装类的构造函数基本数据类型转换为包装对象「装箱」
    Boolean(boolean value)
    Character(char value)
    Integer(int value)
    Long(long value)
    Float(float value)
    Double(double value)
  2. 可以通过××Value()方法将将包装类对象转换为基本数据类型「拆箱」
    intValue()
    longValue()
    floatValue()
  3. 除Character之外,包装类都存在valueOf()方法:用于将字符串转成相应的包装类
  4. 包装类都存在toString()方法:将包装类转换成对应的字符串
    举例代码:
public class Test {
    public static void main(String[] args) {
        //基本数据类型转换成包装类对象
        //「装箱」
        Integer a1 = new Integer(2);//方式一
        
        Integer a2 = Integer.valueOf(3); //方式二:推荐
        System.out.println("a1-->" + a1);
        System.out.println("a2-->" + a2);

        //把包装类对象转成基本数据类型
        //「拆箱」
        int b1 = a1.intValue();
        double b2 = a1.doubleValue();
        System.out.println("b1-->" + b1);
        System.out.println("b2-->" + b2);

        //把字符串转成包装类对象
        Integer c1 = new Integer("12");
        Integer c2 = Integer.valueOf("1256");
        System.out.println("c1-->" + c1);
        System.out.println("c2-->" + c2);

        //包装类转成字符串
        String d1 = c1.toString();
        System.out.println("d1-->" + d1);

        //包装类里定义的常用属性常量
        System.out.println("最大的int:"+ Integer.MAX_VALUE);
        System.out.println("最小的int:"+ Integer.MIN_VALUE);
    }
}

🔥Character包装类的常用方法

●Character.isLetter('a'); //判断这个字符是否为英文字母
●Character.isDigit('1'); //判断这个字符是否为数字
●Character.isUpperCase('A'); //判断这个字符是否为大写
●Character.isLowerCase('a'); //判断这个字符是否为小写
●Character.isWhitespace(' '); //判断这个字符是否为空格或回车

三、自动装箱与自动拆箱

autoboxing 与 unboxing
在JDK1.5之前,Integer i = 5是错误的

  1. 自动装箱
    在JDK1.5之后,Integer i = 5可以实现基本数据转换成包装类,是因为JVM执行了Integer i = Integer.valueOf(5)的操作
  2. 自动拆箱
    类似地JVM也可以将一个对象拆箱转换为基本数据类型,不用再显式调用intValue()等方法

代码如下:

public class Demo02 {
    public static void main(String[] args) {
        //自动装箱
        Integer i = 7; //Integer i = Integer.valurOf(7);
        System.out.println(i); //7
        //自动拆箱
        i = i + 9;  //int i = i.intvalue();
        System.out.println(i); //16
    }
}

四、缓存区

提高效率
以Integer为例,在自动装箱时,,在类加载时已经为在-128~127区间内的每个数值创建了对象,并将这256个对象存放在cache[]数组中。当自动装箱过程发生时或手动调用valueOf()时,首先会先判断是否在该区间如果在,就直接获取数组中对应的包装类对象引用;如果不在,则通过new调用包装类的构造方法来创建对象

  1. Integer、Byte、Short、Long、Character都有缓存区
  2. Double、Float没有缓存区
  3. Boolean也有缓存区,缓存在了两个静态常量(TRUE/FALSE)中;
举报

相关推荐

包装类的使用

包装类----

java:包装类

Java: 包装类

【Java】包装类

JS 包装类

Java包装类

0 条评论