栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习博客:常用类之包装类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习博客:常用类之包装类

1.包装类

包装类就是基本数据类型所对应的引用数据类型

Object可统一所有数据,包装类的默认值是null

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

下面是文档的介绍:

将基本类型包装起来,使其具备对象的性质

2.装箱与拆箱

装箱:将基本数据类型转为对应类型的包装类的过程
拆箱:将包装类转为对应类型的基本数据类型的过程

装箱的两种实现方法:


拆箱的实现方法:

public class Demo01 {
    public static void main(String[] args) {

        //JDK1.5之前手动装箱、拆箱

        //装箱
        int num = 10;
        //使用Integer类创建对象
        Integer integer1 = new Integer(num);
        Integer integer2 = Integer.valueOf(num);
        System.out.println("装箱");
        System.out.println(integer1 + "n" + integer2);

        //拆箱
        Integer integer3 = new Integer(20);
        int num2 = integer3.intValue();
        System.out.println("拆箱");
        System.out.println(num2);

        //JDK1.5之后自动装箱、拆箱
        int a = 100;
        //自动装箱
        Integer integer4 = a;
        System.out.println("自动装箱");
        System.out.println(integer4);
        //自动拆箱
        int a2 = integer4;
        System.out.println("自动拆箱");
        System.out.println(a2);

    }
}

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

1.Number父类中提供了6个共性的方法

2.parseXXX()

3.valueOf()

需要保证类型兼容,否则抛出NumberFormatException异常

public class Demo02 {
    public static void main(String[] args) {

        //基本类型和字符串之间的转换
        //1.基本类型转换为字符串
        int n1 = 100;
        //1.1 使用+
        String s1 = n1 + "";
        System.out.println("+号方法:" + s1);
        //1.2 使用Integer中的toString()方法
        String s2 = Integer.toString(n1);
        System.out.println("toString方法:" + s2);
        //1.3 重载方法
        String s3 = Integer.toString(n1,2);     //转为n1的二进制信息
        System.out.println("重载方法:" + s3);

        System.out.println("------------------------");

        //2.字符转为基本类型
        String str = "200";
        int n2 = Integer.parseInt(str);
        System.out.println(n2);

        //boolean字符串转为基本类型,"true" ---> true  非"true" ---> false
        String str2 = "true";
        boolean b1 = Boolean.parseBoolean(str2);
        System.out.println(b1);

    }
}

4.拓展:整数缓冲区
public class Demo03 {
    public static void main(String[] args) {
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1==integer2);
    }
}


原因分析:引用类型变量integer1和integer2存放在栈里,这两个变量指向堆里两个对象,此时integer1==integer2比较的是两个对象的地址,所以为false

public class Demo03 {
    public static void main(String[] args) {
        Integer integer3 = 100;
        Integer integer4 = 100;
        System.out.println(integer3==integer4);

        Integer integer5 = 200;
        Integer integer6 = 200;
        System.out.println(integer5 == integer6);
    }
}


原因分析:Integer integer3 = 100;是自动装箱,编译查看.class文件发现它用的方法是 Integer integer3 = Integer.valueOf(100);查看该方法源码

    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

Java预先创建了256个常用的整数包类型对象,范围在-128到127之间,100在此范围内,因此将地址传给integer3和integer4,此时它们存放同一个地址,指向同一个对象,integer3==integer4结果为true

而200不在-128至127的范围内,Java会开辟新的内存空间,此时integer5和integer6存放的是两个不同的地址,指向的是两个不同的对象,因此integer5==integer6结果为false


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756741.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号