从零学Java 包装类

发布时间:2024年01月06日

Java 包装类

1 什么是包装类?

基本数据类型所对应的引用数据类型。

2 为什么需要包装类?

1.基本类型功能比较弱。 2.Object可统一所有数据,包装类的默认值是null。

3 包装类对应

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

4 包装类的基本操作

4.1 装箱

装箱: 把基本类型转换成包装类型, 把数据从栈中放到堆里;

eg: 手动装箱

int n = 100;
//手动装箱
Integer integer = new Integer(n);

4.2 拆箱

拆箱: 把包装类型转换成基本类型, 把数据堆从中放到栈里;

eg: 手动拆箱

//手动拆箱
int m = integer.intValue();

4.3 自动装箱/拆箱

JDK 1.5之后,自动装箱、拆箱。基本数据类型和包装类自动转换

//自动装箱
Integer integer2 = 50;//Integer.valueOf();
//自动拆箱
int y = integer2; //integer.intValue();
面试题

eg:

Integer integer3 = 100;
Integer integer4 = 100;
Integer integer5 = 200;
Integer integer6 = 200;
//判断下面输出语句的结果
System.out.println(integer3 == integer4);
System.out.println(integer5 == integer6);

res:

true
false
整数缓冲区

Java预先创建了256个常用的整数包装类型对象。范围 -128 ~ 127

目的:提高效率,节省内存,实现对已创建的对象进行复用。

自动装箱是使用的是 Integer.valueOf(); 这个方法, 当包装的数据在-128 ~ 127 的范围内, 直接指向缓冲区中的对象,
若超出范围就 return new Integer();

因此, 在上面的面试题中, 当integer3和integer4的值为100时, 相当于同时指向了缓冲区中值为100的同一个整数包装类型对象,
所有当使用 == 比较时(引用数据类型为比较地址), integer3和integer4指向的地址相同, 返回值为true;

当数值超出缓冲区, 自动包装就会新new一个Integer对象, 所有integer5和integer6相当于两个新的Integer对象, 地址不同,
返回值为false;

5 包装类的类型转换

注意:需保证类型兼容,否则抛出NumberFormatException异常。

5.1 字符串转基本数据类型

eg:

//字符串转基本数据类型
String s = "100";
//注意:需保证类型兼容,否则抛出NumberFormatException异常。
int n = Integer.parseInt(s);

5.2 基本数据类型转字符串

5.2.1 方法一: +号字符串拼接

eg:

String s2 = 100 + "";
5.2.2 方法二: 使用提供的方法

eg:

String s3 = Integer.toString(n);

5.3 其他的转换

5.3.1 字符串转成boolean

注意: 只要字符串不是"true",都是false

eg:

//字符串转成boolean
boolean b1=Boolean.parseBoolean("true");//true
boolean b2=Boolean.parseBoolean("false");//false
boolean b3=Boolean.parseBoolean("xxx");//只要字符串不是"true",都是false
5.3.2 Character实现大小写转换

eg:

//Character实现大小写转换
System.out.println(Character.toUpperCase('a'));
System.out.println(Character.toLowerCase('A'));
5.3.2 Character实现大小写转换
文章来源:https://blog.csdn.net/weixin_50858647/article/details/135430502
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。