Java SE 常用类:包装类

本文介绍了JavaSE中的包装类,包括它们的作用,如适应集合存储和提供额外的方法。详细讨论了自动拆装箱的过程,并通过示例展示了如何创建和使用包装类对象。还探讨了包装类对象与基本类型比较时的特性,特别是Integer在-128到127范围内的缓存行为。最后,通过示例展示了数值超出此范围时,新的Integer对象将不相等的情况。
摘要由CSDN通过智能技术生成

Java SE 常用类:包装类


1、包装类

  • 基本数据类型的包装类

有了基本数据类型为什么还有包装类型?

  • 1.比如集合只能存储引用数据类型的数据,可以通过包装类型表示
  • 2.包装类提供了很多方法,可以灵活才做数据
  • 3.表示数据默认值的问题|对接数据库中的某些字段值,null与0的概念不同
基本包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

1.1、自动拆装箱:

  • 就是将基本类型和包装类进行自动的互相转换。
  • 自动装箱 : 基本->引用
  • 自动拆箱 : 引用->基本

2、创建与使用

public static void main(String[] args) {
        int i= 1;
        Integer in1 = i;  //Integer.valueOf(i);
        System.out.println(i);
        System.out.println(in1);

        int i2 = in1;  // in1.intValue()

        //test(1.0,2.0); //自动装箱

        Integer in = new Integer("123");
        System.out.println(in.intValue());//转换为int型

        Integer in2 = Integer.valueOf("321"); //字符串转换为Integer类
        System.out.println(in2);
    }

    static void test(Double d1,Double d2){
        System.out.println(d1+d2);  //自动拆箱
    }

3、对象问题

总结:

  • 1.Integer(是否new)与int比较,只要数据值相等,就相等,因为会先做自动拆箱,然后再比较
  • 2.两个int基本数据类型只要值相等,肯定相等,因为值比较数据值
  • 3.两个new比较,无论值是否相等都不相等,new在堆中究开辟空间,地址不同
  • 4.如果一个Integer与一个new Integer比较,就算值相等也不相等,new就是新的地址
  • 5.如果两个Integer类型比较,只要在-128,127范围之间就相等 ,因为返回都是缓冲区对象,如果超过范围,返回new Integer(数据),所以不相等
public static void main(String[] args) {
        int i1=127;
        int i2=127;

        Integer i3=127;
        Integer i4=127;

        System.out.println(i1 == i2); //true
        System.out.println(i3 == i4); //true
        System.out.println(i1 == i3); //true

        Integer i5=new Integer(127);
        Integer i6=new Integer(127);
        System.out.println(i5 == i6); //false
        System.out.println(i1 == i6); //true
        System.out.println(i3 == i6); //false

        //自动装箱: Integer.valueOf(128)
        Integer i7=128;
        Integer i8=128;
        System.out.println(i7 == i8); //false

        //Double.valueOf()
        Double d1=10.0;
        Double d2=10.0;
        System.out.println(d1 == d2);  //false
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值