八大基本数据类型以及对应包装类
八大基本数据类型以及对应包装类
八大基本数据类型
-
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使用。
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修饰的对象,会存放在方法区常量池中。