包装类

概述

在开发中,经常使用包装类对字符串和基本类型数据进行相互转换。- 想想为什么不用强制(隐式)类型转换

就是8个基本数据类型所对应的引用数据类型;

在玩包装类时候,有两点比较重要的东西

  • 创建包装类的对象方式、自动装箱和拆箱的特性;
  • 利用包装类提供的方法对字符串和基本类型数据进行相互转换

作用

因为包装类中提供了一些方法和属性,供程序员可以调用这些方法和属性直接操作数据;

对应关系

规律:

  • Int类型的包装类是Integer
  • char 类型的包装类是Character
  • 其他类型的包装类都是首字母大写

image-20240123223124348

自动拆装箱

学习Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//1.创建Integer对象,封装基本类型数据10
Integer a = new Integer(10);

//2.使用Integer类的静态方法valueOf(数据)
Integer b = Integer.valueOf(10);

//3.还有一种自动装箱的写法(意思就是自动将基本类型转换为引用类型)
Integer c = 10;

//4.有装箱肯定还有拆箱(意思就是自动将引用类型转换为基本类型)
int d = c;

//5.装箱和拆箱在使用集合时就有体现
ArrayList<Integer> list = new ArrayList<>();
//添加的元素是基本类型,实际上会自动装箱为Integer类型
list.add(100);
//获取元素时,会将Integer类型自动拆箱为int类型
int e = list.get(0);

代码案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
练习基本数据类型和包装类型的自动拆箱和自动装箱
*/
public class MyArrayList {
public static void main(String[] args) {
// 1, 创建集合的时候,指定泛型为 包装类型
ArrayList<Integer> list = new ArrayList<>();

// 2, 添加数据的时候,可以直接添加基本数据类型的数据,会自动装箱成包装类型
list.add(222);
list.add(333);
// 3, 取值
Integer i = list.get(1);
System.out.println(i * 2);
System.out.println(list);

// 根据元素删除数据,不能直接传递整数类型的基本数据类型,否则会被当成索引处理,如果想当成元素使用,需要将基本数据类型转为包装类型即可
// list.remove(666); // 这里会报索引越界异常
Integer key = 222;
list.remove(key);
System.out.println(list); // [333]

// 上面三句等价于一句
list.remove(Integer.valueOf(222));
System.out.println(list);
}
}

字符串和基本数据类型互转

将任意类型转为字符串

  • 任何东西和字符串拼接都是字符串
    • 比如 112 + “”最终得到”112”字符串

将字符串转为任意基本类型

  • 记住一个方法parseXxx
    • 如果想转Int,就parseInt,其他同理

代码案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MyInteger {
public static void main(String[] args) {
// 1, 定义一个整数
int a = 123;
// 2, 把a转为字符串(方式1:直接拼接空串
String b = a + "";
System.out.println(b.length());

// 方式二:使用toString方法
String b1 = Integer.toString(a);

// 3, 将b转为int类型
int i = Integer.parseInt(b);
System.out.println(i);

// 4, 将b转为double类型
double j = Double.parseDouble(b);
System.out.println(j);

// 5, 总结规律,如果想将String类型的数据转为指定类型,转什么类型就调用该类型的包装类
// 打印出int类型的范围
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}