八大基本数据类型以及对应包装类

八大基本数据类型以及对应包装类

八大基本数据类型

    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修饰的对象,会存放在方法区常量池中。

5. Integer int String 互转

经验分享 程序员 微信小程序 职场和发展