包装类
包装类用来将基本类型封装成对象。
好处: 可以在对象中定义更多的功能方法操作该数据。
八种包装类除了Character类,都有其对应的
static Xxx parseXxx(String s)
方法。用来将字符串类型数据转为基本数据类型数据使用键盘录入的时候,统一使用nextLine()接收数据,再将数据用
parseXxx(String s)
方法转换为需要的数据类型。
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
获取包装类: 直接赋值即可。
Integer i = 10;
Character c = '0';
Boolean b = true;
装箱和拆箱
1 装箱
把基本数据类型转化为对应的包装类类型
Integer i = Integer.valueOf(100);
2 自动装箱
JDK5以后,Java底层会自动的将int类型转为Integer对象
// 底层也做了Integer.valueOf(100)获取Integer对象,只是这些代码被隐藏起来了
Integer ii = 100;
3 拆箱
把包装类类型转化为对应的基本数据类型
Integer i = Integer.valueOf(100);
i = i.intValue() + 200;
4 自动拆箱
JDK5以后,Java底层会自动的将Integer对象转为int类型
// i + 200 -> 自动拆箱 ; i = i + 200 -> 自动装箱
i = i + 200;
5 注意
- 在使用包装类类型的时候,如果要做操作,要先判断是否为 null
- 只要是对象,在使用前就必须进行 是否为null 的判断
//如果不进行判断
Integer x = null;
x += 100; // NullPointerException 空指针异常
Integer 类
1 成员方法
方法 | 说明 |
---|---|
static String toBinaryString(int i) | 转为二进制 |
static String toOctalString(int i) | 转为八进制 |
static String toHexString(int i) | 转为十六进制 |
static int parseInt(String s) | 将字符串类型整数转为int类型整数 |
2 int 转 String
方法1:字符串连接(简单,但不专业)
int num = 100;
String s = "" + num;
方法2:public static
String valueOf(类型 变量)
//将指定类型的变量转成String类型
int num = 100;
String s = String.valueOf(num);
3 String 转 int
方法1:String -> Integer -> int
String s = "100";
// String -> Integer 静态方法
Integer i = Integer.valueOf(s);
// Integer -> int 自动拆箱
int num = i;
方法2:public static
int parseInt(String s)
//将字符串类型整数转为int类型整数
String s = "100";
int y = Integer.parseInt(s);
JDK5以前获取包装类对象
JDK5以前获取Integer类对象的方法(了解)
public Integer(int value) //构造方法
public Integer(String value)
public static Integer valueOf(int i) //静态方法
public static Integer valueOf(String s)
构造方法与静态方法的区别(⭐)
1.构造方法是new出来的对象,每一次都是新的地址。
2.Integer类在底层会将在[-128, 127]之间的整数提前创建好对象放到一个数组中。而静态方法valueOf()的底层,会对传进来的数据进行判断,如果在[-128, 127]之间,则会返回已经创建好的对象。
public class Demo {
public static void main(String[] args) {
//构造方法
Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
Sout: i1 == i2; //false
Integer i3 = new Integer(128);
Integer i4 = new Integer(128);
Sout: i4 == i4; //false
//静态方法
Integer i5 = Integer.valueOf(127);
Integer i6 = Integer.valueOf(127);
Sout: i5 == i6; //true
Integer i7 = Integer.valueOf(128);
Integer i8 = Integer.valueOf(128);
Sout: i7 == i8; //false
}
}