包装类
基本数据类型不是面向对象的,因此很多地方使用起来不方便,包装类可以很好的解决这个问题;
一、包装类的分类
-
包装类是针对八种基本数据类型相应的引用类型;
-
有了类的特点,就可以调用相应的类方法;
基本数据类型 | 包装类 |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
二、包装类和基本数据类型
-
jdk5 前的手动装箱和拆箱的方式。
- 装箱:基本类型 -> 包装类型
- 拆箱:包装类型 -> 基本类型
// 手动装箱 int n1 = 100; Integer integer = new Integer(n1); Integer integer1 = Integer.valueOf(n1); // 手动拆箱 int i = integer.intValue();
-
jdk5 以后自动拆箱和自动装箱。
- 自动装箱底层调用的是 valueOf() 方法;
- 自动拆箱底层调用的是 IntValue( ) 方法;
// 自动装箱 int n2 = 200; // 底层使用的是 Integer.valueOf(n2) 方法 Integer integer2 = n2; // 自动拆箱 // 底层使用的是 IntValue() 方法 int n3 = integer2;
三、包装类型和 String 类
- 包装类型与 Integer 类型的转换案例
public class SwapIntToStr {
public static void main(String[] args) {
// 自动装箱
Integer integer = 100;
// 包装类 -> String
String str1 = integer + "";
String str2 = String.valueOf(integer);
String str3 = integer.toString();
// String -> 包装类
String str = "123456";
Integer integer1 = Integer.parseInt(str);
Integer integer2 = new Integer(str);
}
}
四、Integer 和 character 常用方法
public class Method {
public static void main(String[] args) {
// 返回最小值
System.out.println(Integer.MIN_VALUE);
// 返回最大值
System.out.println(Integer.MAX_VALUE);
// 判断是不是数字
System.out.println(Character.isDigit('a'));
// 判断是不是字母
System.out.println(Character.isLetter('a'));
// 判断是不是大写
System.out.println(Character.isUpperCase('a'));
// 判断是不是小写
System.out.println(Character.isLowerCase('a'));
// 判断是不是空格
System.out.println(Character.isWhitespace('a'));
// 转成大写
System.out.println(Character.toUpperCase('a'));
// 转成小写
System.out.println(Character.toLowerCase('A'));
}
}
五、Integer 使用注意细节
- 如果基本数据类型值在 IntegerCache.low(-128)~IntegerCache.high(127) ,就直接从数组返回;
- 如果不在缓存的范围内,就直接使用 new Integer( );
- 使用 == 没有算数运算的话,包装类不会自动拆箱,所以 new 出来的两个对象不等;
- 开发的时候建议使用 equals( ) 方法;某些开发公约不允许使用 == 判断包装类是否相等;
/**
* @author River
* @datetime 2022/4/8 10:29
*/
public class Method {
public static void main(String[] args) {
// 自动装箱在 -127~128 之间,使用 == 二者相等
Integer integer1 = 1;
Integer integer2 = 1;
System.out.println(integer1 == integer2);
// 超过 127 使用 new Integer(),使用 == 二者不相等
integer1 = 128;
integer2 = 128;
System.out.println(integer1 == integer2);
// 直接使用构造器生成的实例, 使用 == 二者不相等;
Integer integer3 = new Integer(1);
Integer integer4 = new Integer(1);
System.out.println(integer3 == integer4);
}
}