1、包装类:
1、针对八种基本数据类型,他们相应的引用类型,就是包装类。
就是基本数据类型的引用类型就是包装类
2、包装类有了类的特点,可以调用类中的方法。
2、类继承关系:
3、装箱、拆箱:
public class integer_ {
public static void main(String[] args) {
// 1、自动装箱:将基本数据类型 --> 包装类
Integer integer = 100; // 底层使用的仍然是Integer.valueOf(n1);
// 2、自动拆箱:包装类 --> 基本数据类型
int n2 = integer; // 底层仍然使用intValue()方法
}
}
测试题:
Object obj = true ? new Integer(1):new Double(2.0);
System.out.println(obj); // 1.0 三元运算符是一个整体,使用最高精度double
Object obj2;
if(true) {
obj2 = new Integer(1);
} else {
obj2 = new Double(2.0);
}
System.out.println(obj2); // 1 if不是一个整体,使用自己精度
4、包装类和string转换:
// Integer --> String
Integer i = 100; // 自动装箱
// 1、方法一:
String str1 = i + "";
// 2、方法二:
String str2 = i.toString();
// 3、方法三
String str3 = String.valueOf(i);
// 2、String --> Integer
String str4 = "234";
Ingeger i2 = Integer.parseInt(str4); // 自动装箱
Integer i3 = new Integer(str4); // 构造器
5、Integer创建机制:
package com.hsf.wrapper;/*
* @author HSF
* @version 8.0
*/
public class integer_2 {
public static void main(String[] args) {
new integer_2().method();
}
public void method() {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j); // false
/*
* public static Integer valueOf(int i) {
* // 如果i是在-128~127之间,直接返回
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
// 如果不是这个范围,就new一个
return new Integer(i);
}
* */
Integer m = 1; // 底层使用的是Integer.valueOf()
Integer n = 1;
System.out.println(m == n); // true
Integer x = 128;
Integer y = 128;
System.out.println(x == y); // false
}
}
只要有基本数据类型,判断的就是值是否相等
Integer i1 = 127;
int i2 = 127;
System.out.println(i1 == i2); // t