包装类

包装类

基本类型存在栈空间里

包装类是一个引用类型,存放在堆中

包装类将基本数据类型包装在一个对象中

8种包装类提供不同类型间的转换方式:

Number父类中提供的6个共性方法。

parseXXX()静态方法。(将字符串转换成基本类型)
valueof()静态方法。(将基本类型转换成引用类型)

public class Application {
    public static void main(String[] args) {
        int num=10;
        //装箱
        Integer integer = new Integer(num);
        Integer integer1=Integer.valueOf(num);   //将整型转换成引用类型
        
        //拆箱
        int num2=integer1.intValue();         //将引用类型转换为整型
    }
}

基本类型和字符串之间的转换

通过基本类型封装对象的parsXXX()方法进行字符串向基本数据类型的转换

public class Common_Class {
    public static void main(String[] args) {
        //将基本类型转换成字符串
        //1.通过“+”号连接
        //2.通过toString()方法
        int num=10;
        String s1=num+"";
        String s2=Integer.toString(num);
        String s3=Integer.toString(num,16);   //toString()的重载方法,此处是将整型转换成16进制表示后,再变成字符串类型
        System.out.println(s1+" "+s2+" "+s3);

        //将字符串转换成基本类型
        //通过parseXXX()方法进行转换
        int num_a=Integer.parseInt(s1);      //将字符串s1转换成整型
        float num_b=Float.parseFloat(s1);    //将字符串s1转换成浮点类型
    }
}

:boolean类型的字符串转换成基本类型的时候,只有字符串"true"会转换成boolean类型的true,其他的boolean类型的字符串都会转换成false

Integer整数缓冲区

Java预先创建了256个常用的整数包装类型对象

(缓冲区中的数为-128~127,如果新创建的引用类型数据在这个区间内,则直接在堆空间中取这个数映射到栈空间中,如果不在这个区间内则在堆空间中新开辟一个空间)

注:只有通过valueof()方法定义的整型引用类型才会有缓冲区

public class Integer_Demo {
    public static void main(String[] args) {
        //通过实例化一个引用类型对象,没有缓冲区,所以输出false
        Integer int1=new Integer(127);
        Integer int2=new Integer(127);
        System.out.println(int1==int2);  //等于号是比地址equals()方法比的是字符串的值
       
        /*Integer.java文件中的valueof()方法
        public static Integer valueOf(int i) {
            if (i >= Integer.IntegerCache.low && i <= Integer.IntegerCache.high)
                return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];
            return new Integer(i);
        }*/
        
        //只有通过valueof()方法定义的引用类型才会有整型缓冲区
        //128不在整型缓冲区提供的区间内,输出false
        Integer int3=Integer.valueOf(128);
        Integer int4=Integer.valueOf(128);
        System.out.println(int3==int4);
        
        //111在整型缓冲区提供的区间内,所以输出true
        Integer int5=Integer.valueOf(111);
        Integer int6=Integer.valueOf(111);
        System.out.println(int5==int6);
    }
}

整型缓冲区映射图

posted @ 2022-01-24 15:05  望穿先生  阅读(22)  评论(0编辑  收藏  举报