包装类
每个基本类型都有对应的包装类型
装箱:基本数据类型 => 引用类型
拆箱:引用类型 => 基本数据类型
public class Demo01 {
public static void main(String[] args) {
int a = 10;
//类型转换:装箱:基本数据类型 => 引用类型
int num1 = 18;
Integer integer1 = Integer.valueOf(num1);
Integer integer2 = new Integer(num1);
System.out.println("装箱");
System.out.println(integer1);
System.out.println(integer2);
// 类型转换:拆箱:引用类型 => 基本数据类型
int num2 = integer1.intValue();
System.out.println("拆箱");
System.out.println(num2);
// jdk1.5之后 自动装箱和拆箱
int age = 30;
// 自动装箱
Integer integer3 = age;
System.out.println("自动装箱");
System.out.println(integer3);
// 自动拆箱
int age2 = integer3;
System.out.println("自动拆箱");
System.out.println(age2);
System.out.println("-----------------");
// 基本类型转成字符串
int n1 = 9;
String s1 = "" + n1;
String s2 = Integer.toString(n1, 8); // (number, 几进制)
System.out.println(s1);
System.out.println(s2);
System.out.println("-----------------");
// 字符串转成基本类型
String str = "150";
int strn = Integer.parseInt(str);
System.out.println(strn);
// boolean字符串形式转成字符串形式 "true" => true, 其他 => false
String str2 = "true";
boolean f1 = Boolean.parseBoolean(str2);
System.out.println(f1);
}
}
整数缓冲区 IntegerCache
Java预先创建了256个常用的整数包装类型对象:-128 - 127
public class Demo02 {
// 整数缓冲区 IntegerCache Problem
// 当自动包装的值在 -128 <= i <= 127 区间内,引用对象指向预先创建好的整数包装类型对象,所以地址相同。
// 当自动包装的值在这个区间外,实际上是调用了Integer的构造方法 => new Integer,所以地址不同。
public static void main(String[] args) {
Integer i1 = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i1==i2); // false
Integer i3 = 100;
Integer i4 = 100;
System.out.println(i3==i4); // true
Integer i5 = 200;
Integer i6 = 200;
System.out.println(i5==i6); // false
}
}