【Java】包装类详解(Intege...)

本文介绍了Java中的八大包装类,包括它们的基本概念、与基本数据类型的转换(装箱和拆箱)、与String之间的转换,以及在使用过程中的注意事项。在JDK5之后,自动装箱和拆箱使得操作更加便捷。此外,还提到了Integer对象的缓存特性,对于-128到127之间的值,Integer对象会进行复用,导致相等性判断可能出现特殊情况。
摘要由CSDN通过智能技术生成

包装类

基本概念

针对八种基本数据类型相应的引用类型——包装类

有了类的特点之后便使用类中的方法了

包装类基本数据类型
Booleanboolean
Characterchar
Bytebyte
Shortshort
Integerint
Longlong
Floatfloat
Doubledouble

继承图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上六种的父类是Number

包装类和基本数据类型的转换

基本类型 -> 包装类型是装箱,反之是拆箱

JDK5之前是手动拆箱和手动装箱

JDK5之后是自动拆箱和自动装箱

//JDK5 之前
int i = 1;
//装箱
Integer integer = new Integer(i);
Integer integer1 = Integer.valueOf(i);
//拆箱
int i1 = integer.intValue();

//JDK5 之后
int j = 1;
//自动
//    public static Integer valueOf(int i) {
//         if (i >= IntegerCache.low && i <= IntegerCache.high)
//             return IntegerCache.cache[i + (-IntegerCache.low)];
//         return new Integer(i);
//     }
Integer integer2 = j;
//    public int intValue() {
//         return value;
//     }
int j1 = integer2;

包装类与String

//包装类转String
Integer num = 1;
String s1 = num + "";
String s2 = num.toString();
String s3 = String.valueOf(num);

//String转包装类
String s = "123";
int i2 = Integer.parseInt(s);
//    public Integer(String s) throws NumberFormatException {
//         this.value = parseInt(s, 10);
//     }
Integer integer3 = new Integer(s);

注意事项

  1. 三元运算符是一个整体,提高精度
  2. new Integer有范围,-128到127直接获取
//三元运算符
Object o = true ? new Integer(1) : new Double(2);
System.out.println(o);//1.0
//new Integer有范围
//      * This method will always cache values in the range -128 to 127,
//      * inclusive, and may cache other values outside of this range.
//     public static Integer valueOf(int i) {
//         if (i >= IntegerCache.low && i <= IntegerCache.high)
//             return IntegerCache.cache[i + (-IntegerCache.low)];
//         return new Integer(i);
//     }
Integer integer4 = 1;
Integer integer5 = 1;
Integer integer6 = 128;
Integer integer7 = 128;
System.out.println(integer4 == integer5);//true
System.out.println(integer6 == integer7);//false

代码

package 包装类;

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

        //JDK5 之前
        int i = 1;
        //装箱
        Integer integer = new Integer(i);
        Integer integer1 = Integer.valueOf(i);
        //拆箱
        int i1 = integer.intValue();

        //JDK5 之后
        int j = 1;
        //自动
        //    public static Integer valueOf(int i) {
        //         if (i >= IntegerCache.low && i <= IntegerCache.high)
        //             return IntegerCache.cache[i + (-IntegerCache.low)];
        //         return new Integer(i);
        //     }
        Integer integer2 = j;
        //    public int intValue() {
        //         return value;
        //     }
        int j1 = integer2;


        //包装类转String
        Integer num = 1;
        String s1 = num + "";
        String s2 = num.toString();
        String s3 = String.valueOf(num);

        //String转包装类
        String s = "123";
        int i2 = Integer.parseInt(s);
        //    public Integer(String s) throws NumberFormatException {
        //         this.value = parseInt(s, 10);
        //     }
        Integer integer3 = new Integer(s);



        //注意
        //三元运算符
        Object o = true ? new Integer(1) : new Double(2);
        System.out.println(o);//1.0

        //Integer有范围
        //      * This method will always cache values in the range -128 to 127,
        //      * inclusive, and may cache other values outside of this range.
        //     public static Integer valueOf(int i) {
        //         if (i >= IntegerCache.low && i <= IntegerCache.high)
        //             return IntegerCache.cache[i + (-IntegerCache.low)];
        //         return new Integer(i);
        //     }
        Integer integer4 = 1;
        Integer integer5 = 1;
        Integer integer6 = 128;
        Integer integer7 = 128;
        System.out.println(integer4 == integer5);//true
        System.out.println(integer6 == integer7);//false


    }
}

结尾

求点赞 求评论 求收藏 求分享 求关注

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就爱喝菠萝啤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值