八大基本数据类型以及对应包装类
八大基本数据类型
- byte/8
- char/16
- short/16
- int/32
- float/32
- long/64
- double/64
- boolean/~
注:具体大小没有明确规定,JVM 会在编译时期将 boolean 类型的数据转换为 int,使用1来表示 true,0 表示
false。JVM ⽀持 boolean 数组,但是是通过读写 byte 数组来实现的。
包装类
java中为8种基本数据类型对应准备了8种包装类型。
8种包装类属于引用数据类型。
1. 为什么要再提供8种包装类?
因为8种基本类型不够用。我们有时需要把基本类型作为Object使用。
基本数据类型 | 包装类型 |
---|---|
byte | java.lang.Byte(父类Number) |
short | java.lang.Short(父类Number) |
int | java.lang.Integer(父类Number) |
long | java.lang.Long(父类Number) |
float | java.lang.Float(父类Number) |
double | java.lang.Double(父类Number) |
boolean | java.lang.Boolean(父类Object) |
char | java.lang.Character(父类Object) |
2. Number类
8种包装类中其中6个都是数字对应的包装类,他们的父类为Number,研究一下Number中公共的方法。
Number是一个抽象类,无法实例化对象。
Number类中有以下方法用于拆箱。
// 基本数据类型向引用数据类型转换(装箱)
Integer i = new Integer(123);
// 将引用数据类型转换成基本数据类型(拆箱)
float f = i.floatValue();
3. Integer
以上8种包装类,重点以java.lang.Integer为代表进行学习
// 构造函数
Integer i = new Integer(100);
Integer j = new Integer("123");
// 访问包装类的常量,来获取最大值和最小值
Integer.MAX_VALUE 2147483647
Integer.MIN_VALUE
// 在JDK1.5之后支持自动装箱和自动拆箱
// 自动装箱: int自动转换为Integer
Integer x = 100;
// 自动朝拆箱: Integer自动转换为int
int y = x;
x+1 //不会报错,x自动拆箱为int,因为+运算符右边是基本数据类型,+要求两边都是基本数据类型
x == y // true 这里不会自动拆箱为int,因为==运算符不需要两边运算数为int类型
// 常用的两个方法
// 1.intValue() 手动拆箱
Integer i = 123;
int retValue = i.intValue();
// 2. static int parseInt(String s) 字符串转数字 静态方法
int retValue = Integer.parseInt("123");
// 如果字符串不是数字,会抛出 NumberFormatException的异常
4. 缓存池
java中为了提高程序的执行效率,将-128~127之间包装对象提前创建好,放到了一个方法区的“整数型常量池”中,目的是只要用这个区间的数据不需要再new,直接从整数型常量池取出来。
用static final修饰的对象,会存放在方法区常量池中。