介绍
WrapperClass.png我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到Object[]数组或集合中的操作等等。
为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。
public class WrapperClass {
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(50);
System.out.println(i);
int k = 10;
System.out.println(k);
}
}
注意事项⚠️:
1.除了Character和Boolean以外,其他的类都是“数字型”,“数字型”都是java.lang.Number的子类。Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:intValue()、longValue()、floatValue()、doubleValue(),意味着所有的“数字型”包装类都可以互相转型。
用途
- 作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。
- 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。
public class TestInteger {
void testInteger(){
// 基本类型转化称Integer对象 的两种方式
Integer int1 = new Integer(10);
Integer int2 = Integer.valueOf(20);
// Integer对象转化称int
int a = int1.intValue();
System.out.println(a);
// 字符串转化成Integer对象
Integer int3 = Integer.parseInt("334");
Integer int4 = new Integer("335");
// Integer对象转化成字符串
String str1 = int3.toString();
// 一些常见的int类型相关的常量
System.out.println("int能表示的最大整数:"+Integer.MAX_VALUE);
System.out.println("int能表示的最小整数:"+Integer.MIN_VALUE);
}
public static void main(String[] args) {
TestInteger test = new TestInteger();
test.testInteger();
}
}
自动装箱/自动拆箱
JDK1.5以后才有的功能,编译器在编译时自动帮我们做的
- 自动装箱
自动装箱过程是通过调用包装类的valueOf()方法实现的 - 自动拆箱
与装箱同理,帮我们调用intValue 或者其他xxxValue()方法(xxx代表对应的基本数据类型,如intValue()、doubleValue()等)
public class TestAutoboxing {
public static void main(String[] args) {
// 自动装箱
// 相当于编译器自动帮我们执行了valuesOf方法
Integer i = 5;
System.out.println(i);
Integer j = Integer.valueOf(6);
System.out.println(j);
// 自动拆箱
int k = i;
System.out.println(k);
int l = j.intValue();
System.out.println(l);
}
}
包装类的缓存
包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法
网友评论