包装类
包装类是对基本数据类型的扩展
装箱:基本类型 -> 包装类型 。 反之为拆箱
JDK5之后为自动装箱和拆箱
装箱底层调用的是 valueOf方法
package leetcode0606.wrapper;
public class Integer01 {
public static void main(String[] args) {
// jdk5之前 手动装箱
// int -> Integer
int n1 = 100;
Integer integer = Integer.valueOf(n1);
Integer integer1 = new Integer(n1);
// 手动拆箱
// Integer -> int
int i = integer.intValue();
// jdk5之后 自动装箱和拆箱
int n2 = 200;
//
Integer integer2 = n2; // 底层先调用 valueOf 然后在new Integer
//
int n3 = integer2; // 底层调用 intValue
}
}
测试:
package leetcode0606.wrapper;
public class Test02 {
public static void main(String[] args) {
Double d = 100d;
Float f = 1.5f;
Object obj1 = true ? new Integer(1) : new Double(1.0); // 整条语句是一个整条,那么double的优先级更高
System.out.println(obj1); // 1.0
Object obj2;
if(true){
obj2 = new Integer(1);
}else {
obj2 = new Float(1.0);
}
System.out.println(obj2); // 1
}
}
包装类方法: String <--> Integer
package leetcode0606.wrapper;
public class wrapper_String {
public static void main(String[] args) {
// 包装类 -> String
Integer i = 100;
//方式1
String str1 = i + ""; // i 本身不变,而是产生了一个新的字符串
//方式2
String str2 = i.toString();
//方式3
String str3 = String.valueOf(i);
// String -> 包装类
//方式1
String str4 = "12345";
Integer integer3 = Integer.parseInt(str4); // 自动装箱
//方式2
Integer integer = new Integer(str4);
}
}