①.包装类
- 包装类就是基本类型所对应的引用数据类型 java.lang包当中
基本类型存储在内存栈空间中,引用类型数据存储在堆空间中(栈中存的是地址) - Object可以统一所有数据
包装类的默认值是null
基本数据类型 | 包装类型 |
---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
-装箱拆箱
- 装箱:将基本类型的数据转为引用类型的过程
将基本类型数据从栈中转化为对象拿到堆中的过程 - 拆箱:将引用类型的对象转为基本类型的过程
将引用类型对象从堆中提取为基本类型拿到栈中的过程
public class PackingTest {
public static void main(String[] args) {
int num1 = 87;
Integer integer1 = new Integer(num1);
Integer integer2 = Integer.valueOf(num1);
Integer integer3 = Integer.valueOf(100);
int num2 = integer3.intValue();
int num3 = 300;
Integer integer4 = num3;
int num4 = integer4;
}
}
-类型转换
- Java对8种包装类提供了不同类型的转换方式
Number父类中提供的六个共性方法
parseX类型X()静态方法,实现字符串与基本类型的转换 - 注意:进行类型转换时要保证类型兼容否则会抛出NumberFormatException异常
public class ParseTest {
public static void main(String[] args) {
int age = 18;
String s1 = "" + age;
String s2 = Integer.toString(age);
s2 = Integer.toString(age,15);
System.out.println(s2);
s2 = Integer.toBinaryString(age);
System.out.println(s2);
s2 = Integer.toHexString(age);
System.out.println(s2);
String money1 = "1500";
String money2 = "154.45";
int i = Integer.parseInt(money1);
System.out.println(i);
double d = Double.parseDouble(money2);
System.out.println(d);
String bo = "treu";
boolean b = Boolean.parseBoolean(bo);
System.out.println(b);
}
}
-Integer缓冲区
- Java预先创建了256个常用的整数包装类型对象
- 在实际使用当中,若在缓冲区范围内,则会对之前创建的对象进行复用
- 缓冲区的范围-128 ~ 127共256个对象,Java底层会事先创建好,并存放在堆中。
在执行Integer.valueof(num)语句时,如果num在范围内,则Java会将堆中的对象地址直接赋给新建的对象。
超出范围之后,无法调用缓冲区数据,Java底层自动执行 new Integer(num);语句
public class IntegerBufferTest {
public static void main(String[] args) {
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1 == integer2);
Integer integer3 = 100;
Integer integer4 = 100;
System.out.println(integer3 == integer4);
Integer integer5 = 200;
Integer integer6 = 200;
System.out.println(integer5 == integer6);
}
}