Java中关于包装类的总结

为什么有包装类?-----对基本数据类型的补充

Java中的8种基本数据类型【不能叫做对象】  

什么是对象?---堆里的一块内存空间 

注意:String是类;

基本数据类型中没有操作数据的能力;类当中可以定方法,用于操作数据 

1、整形:byte short int long

2、浮点型:float double

3、字符型:char

4、布尔型:boolean

Java中的3种引用类型 

1、

2、接口

3、数组 

一、包装类概述

Java为每个基本数据类型提供了对应的包装类,这些类位于Java.lang包中:

二、包装类的主要用途

1、在集合中使用:集合框架如List、Set等只能存储对象,不能存储基本类型

2、提供更多操作方法:如类型转换、进制转换等

3、允许null值:基本类型不能为null,包装类可以

4、泛型支持:泛型参数必须是对象类型

三、自动装箱与拆箱(基本数据类型和包装类变换)

//自动装箱
Integer a=10;//编译器自动转换为Integer.valueOf(10);Integer是一个类,类要调用一些方法来存储数据
//自动拆箱
int b=a;//编译器自动转换为a.intValue()---变量a调用intValue方法取出10,并把10赋给b
int c=10;//基本数据类型直接定义数据

四、常用方法

(一)基本方法(所有包装类都有)

  • valueOf();静态方法,返回包装类对象
  • xxxValue():实例方法,返回对应的基本类型值
  • parsexxx():静态方法,将字符串转换为基本类型
  • toString():转换为字符串表示

(二)特殊方法

Integer/Long等数字类型:

  • toBinaryString():转换为二进制字符串
  • toHexString():转换为十六进制字符串
  • compareTo();比较两个值
  • compare():静态方法比较两个值

Character类特有方法:

  • isDigit():判断是否为数字
  • isLetter():判断是否为字母
  • isWhitespace():判断是否为空白字符
  • toUpperCase()/toLowerCase():大小写转换

Boolean类特有方法:

  • logicalAnd()/logicalOr()/logicalXor():逻辑运算

五、缓存机制

Byte:缓存-128~127的所有值

Short:缓存-128~127的所有值

Integer:默认缓存-128~127

Long:缓存-128~127的所有值

Character:缓存0~127的字符

Boolean:缓存TRUE和FALSE两个实例

Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true,使用缓存对象

Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false,超出缓存范围,新建对象

六、经典面试题

Integer a = 100 等价于 Integer.valueOf(100);

底层valueOf方法:

理解:cache为一个长度为256的数组; 

128陷阱:

为什么叫128陷阱?----因为127时值为true,128时值为false

 


1、基本类型数据比较值,值大小相等,为true

2、自动装箱,10<128,在内存中都是在cache数组的一块空间里,地址相等为true

3、使用new关键字,分别开辟新内存空间,地址不相等为false

4、a1为包装类,跟基本数据类型a对比时,需要拆箱,直接将数据拿出来,而此时==比较值是否相同,所以为true;

5、包装类拆箱,equals底层也是==,结果为true

6、a2新开辟了一块内存空间,与a1地址不同,结果为false;

7、a2也会自动拆箱,直接将值拿出来与a比较,结果为true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值