【JavaSE】常用类2[包装类、装箱拆箱、基本类型-字符串型]

①.包装类

  • 包装类就是基本类型所对应的引用数据类型 java.lang包当中
    基本类型存储在内存栈空间中,引用类型数据存储在堆空间中(栈中存的是地址)
  • Object可以统一所有数据
    包装类的默认值是null
基本数据类型包装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

-装箱拆箱

  • 装箱:将基本类型的数据转为引用类型的过程
    将基本类型数据从栈中转化为对象拿到堆中的过程
  • 拆箱:将引用类型的对象转为基本类型的过程
    将引用类型对象从堆中提取为基本类型拿到栈中的过程
public class PackingTest {
    public static void main(String[] args) {
        //装箱,基本类型转成引用类型的过程
        int num1 = 87;
        //创建一个引用类型的对象
        Integer integer1 = new Integer(num1);  //通过构造方法实现装箱,但是不推荐
        Integer integer2 = Integer.valueOf(num1);  //推荐使用

        //拆箱,引用类型转换成基本类型的过程
        Integer integer3 = Integer.valueOf(100);
        int num2 = integer3.intValue();
        //上述装、拆箱方法在jdk1.5之前

        //在jdk1.5之后Java提供了自动装箱、拆箱的功能
        int num3 = 300;
        Integer integer4 = num3;  //自动装箱,实际上底层自动执行了
        //Integer integer4 = Integer.valueOf(num3);

        int num4 = integer4;  //自动拆箱,实际上底层自动执行了
        //int num4 = integer4.intValue();
    }
}

-类型转换

  • Java对8种包装类提供了不同类型的转换方式
    Number父类中提供的六个共性方法
    parseX类型X()静态方法,实现字符串与基本类型的转换
  • 注意:进行类型转换时要保证类型兼容否则会抛出NumberFormatException异常
public class ParseTest {
    public static void main(String[] args) {
        //1.基本类型转换为字符串类型
        int age = 18;
        //1.1通过字符串连接符
        String s1 = "" + age;
        //1.2使用引用类的toString方法
        String s2 = Integer.toString(age);
        s2 = Integer.toString(age,15);  //使用 任意 进制作为返回值
        System.out.println(s2);  //输出:12
        s2 = Integer.toBinaryString(age);     //使用二进制码作为返回值
        System.out.println(s2);  //输出:10010
        s2 = Integer.toHexString(age);        //使用16进制作为返回值
        System.out.println(s2);  //输出12

        //2.字符串类型转为基本类型
        String money1 = "1500";  //转为基本类型时不能出现非数字的字符,不会进行强制类型转换,有小数点会报错
        String money2 = "154.45";  //
        //2.1使用对应类的parseXXX方法
        int i = Integer.parseInt(money1);
        System.out.println(i);
        double d = Double.parseDouble(money2);
        System.out.println(d);

        //boolean的字符串形式转成基本类型时 只有“true”会转换为true  非true串都会转为false
        String bo = "treu";  //非true与false字符串
        boolean b = Boolean.parseBoolean(bo); //都会转换为false
        System.out.println(b);  //输出:false
    }
}

-Integer缓冲区

  • Java预先创建了256个常用的整数包装类型对象
  • 在实际使用当中,若在缓冲区范围内,则会对之前创建的对象进行复用
  • 缓冲区的范围-128 ~ 127共256个对象,Java底层会事先创建好,并存放在堆中。
    在执行Integer.valueof(num)语句时,如果num在范围内,则Java会将堆中的对象地址直接赋给新建的对象。
    超出范围之后,无法调用缓冲区数据,Java底层自动执行 new Integer(num);语句
public class IntegerBufferTest {
    public static void main(String[] args) {
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        //创建的是两个完全不同的对象,所以在栈中的地址肯定不一样
        System.out.println(integer1 == integer2);  //输出false

        Integer integer3 = 100;  //自动装箱
        Integer integer4 = 100;
        //Java自动装箱:Integer integer = Integer.valueOf(100);
        System.out.println(integer3 == integer4);  //输出true

        Integer integer5 = 200;  //自动装箱
        Integer integer6 = 200;
        System.out.println(integer5 == integer6);  //输出false

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值