从零学Java 包装类

Java 包装类

文章目录

  • Java 包装类
    • 1 什么是包装类?
    • 2 为什么需要包装类?
    • 3 包装类对应
    • 4 包装类的基本操作
      • 4.1 装箱
      • 4.2 拆箱
      • 4.3 自动装箱/拆箱
        • 面试题
        • 整数缓冲区
    • 5 包装类的类型转换
      • 5.1 字符串转基本数据类型
      • 5.2 基本数据类型转字符串
        • 5.2.1 方法一: `+`号字符串拼接
        • 5.2.2 方法二: 使用提供的方法
      • 5.3 其他的转换
        • 5.3.1 字符串转成boolean
        • 5.3.2 Character实现大小写转换

1 什么是包装类?

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

2 为什么需要包装类?

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

3 包装类对应

基本数据类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

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实现大小写转换

你可能感兴趣的:(从零学Java,java,python,开发语言)