Java

包装类

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。

常用的操作之一:用于基本数据类型与字符串之间的转换。

基本数据类型与包装类的对应关系

byte    →    Byte 
short    →    Short
int        →    Integer
long    →    Long
float    →    Float
double    →    Double
char    →    Character
boolean →    Boolean

以Integer为例:

valueOf(int a)方法将 基本数据类型转为封装类
intValue()方法 获取封装类型的值

package integer;
/**
 * 包装类
 * 包装类是为了解决基本类型不能直接面向对象开发而诞生的
 * 就是让基本类型可以以对象的形式存在
 * @author QAIU
 *
 */
public class IntegerDemo {
    public static void main(String[] args) {
        int a = 128;
        //基本类型转换为对应的包装类
        //Integer i1 = new Integer(a);
        //Integer i2 = new Integer(a);
        
        //java建议使用value转换
        Integer i1 = Integer.valueOf(a);
        Integer i2 = Integer.valueOf(a);
        
        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));
        
        //包装类转换为基本类型
        int d = i1.intValue();
        System.out.println(d);
        double dou = i1.doubleValue();
        System.out.println(dou);
        float f = i1.floatValue();
        System.out.println(f);
        byte b = i1.byteValue();
        System.out.println(b);
        /*
         * 所有数字类型的包装类都有两个常量:
         * MAX_VALUE,MIN_VALUE
         * 用来记录基本类型的取值范围
         */
        //获取int最大值
        int max = Integer.MAX_VALUE;
        System.out.println(max);
        int min = Integer.MIN_VALUE;
        System.out.println(min);
        long lmax = Long.MAX_VALUE;
        System.out.println(lmax);
        double dmax = Double.MAX_VALUE;
        System.out.println(dmax);
    }
}

parseInt(String str)方法 解析字符串为基本类型

package integer;

/**
 * 包装类有一个非常实用的功能
 * 就是可以将字符串解析成对应的基本类型
 * 但是前提是字符串内容
 * 正确描述了基本类型可以保存的值
 * @author QAIU
 *
 */
public class IntegerDemo2 {
    public static void main(String[] args) {
        String str = "123";
        int d = Integer.parseInt(str);
        System.out.println(d);

        double dou = Double.parseDouble(str);
        System.out.println(dou);
    }
}

JDK1.5推出了一个新特性:自动拆装箱

package integer;
/**
 * JDK1.5推出了一个新特性:自动拆装箱
 * 该特性允许我们可以在源代码中可以让基本类型与对应的
 * 包装类之间相互赋值使用 无需添加额外的转换代码了
 * 但是该特性是编译器认可的,实际上编译期将源代码
 * 编译为class文件时会添加转化代码
 * @author QAIU
 *
 */
public class IntegerDemo3 {
    public static void main(String[] args) {
        // 自动拆装箱
        /*
         * 这里会触发编译器的自动拆装箱特性
         * 编译器会在编译期间将包装类转换为基本类型
         * 下面代码会变为:
         * int a = new Integer(1).intValue()
         */
        int a = new Integer(123);
        /*
         * 这里触发自动装箱特性,编译器会改代码为:
         * Integer i = Integer.valueOf(a)
         */
        Integer i = a;
        System.out.println(i);
        
    }
}

评论

This is just a placeholder img.