Java基础--包装类

目录

一、包装类定义

二、几种常见的包装类

三、128陷阱

四、自动拆装箱

自动装箱

自动拆箱

五、例题

答案解析:


一、包装类定义

        Java是面向对象的语言,但是在Java中基本数据类型int,double等不是对象,不好进一步处理。因此,Java为每个基本类型都提供了包装类,如int类型数值的包装类Integer和boolean型数值的的包装类Boolean等,这样便可以吧这些基本数据类型转换为对象来处理了。

二、几种常见的包装类

原始类型包装类
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

三、128陷阱

public static void main(String[] args) {
		Integer num1 = 100;
		Integer num2 = 100;
		System.out.println(num1 == num2);   //true
		
		Integer num3 = 200;  
		Integer num4 = 200;
		System.out.println(num3 == num4);   //false
} 

        我们对文件反编译发现valueOf()方法

        答案就在Integet的valueOf()方法当中,我们将数值在-128-127之间的数值都存储在有一个catch数组当中,该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在数组当中的地址,所以在-128-127之间的数值用==进行比较是相等的。

而不在这个区间的数,看equals()方法,需要新开辟一个内存空间,所以地址不相等。

四、自动拆装箱

自动装箱

基本数据类型变为包装类:调用包装类的构造器

Integer b=10;   //Integer b=Integer.valueOf(10);
自动拆箱

包装类转换为基本数据类型

Integer b=10;
int a = b;     //int a = b.intValue();

五、例题

public static void main(String[] args) {
    int  a = 10;
    int  b = 10;
    Integer a1 = 10;
    Integer b1 = 10;
    Integer a2 = new Integer(10);
    Integer b2 = new Integer(10);
    System.out.println(a == b);    // T   基本数据类型 == 比较值
    System.out.println(a1 == b1);  // T  128陷阱
    System.out.println(a2 == b2);  // F  引用数据类型 == 比较地址
    System.out.println(a1 == a);   // T 用 == 判断,自动拆箱
    System.out.println(a1.equals(a));  // T 用 equals() 判断,自动装箱  
    System.out.println(a1 == a2);   //F
    System.out.println(a == a2);    // T a2自动拆箱
}
答案解析:

1、true   比较值;

2、true    a1 b1都在数组中的同一个位置

3、false   开辟了新的内存空间

4、true   因为包装类和基本数据类型用==比较的时候会自动拆箱

5、true   因为包装类和基本数据类型用equals方法比较的时候会自动拆箱(方法如下图)

6、false   new开辟新空间

7、true   自动拆箱

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值