Java入门第92课——包装类

1.1 包装类概述

1.1.1 包装类概述

    · 在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象;

    · 所有基本类型都有一个与之对应的类,即包装类(wrapper)。

    image.png

包装类概述(续1)

    · 包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值;

    · 包装类是final的,不能定义他们的子类。

基本类型 基本类型 父类
int java.lang.Integer java.lang.Number
long java.lang.Long java.lang.Number
double java.lang.Double java.lang.Number
short java.lang.Short java.lang.Number
float java.lang.Float java.lang.Number
byte java.lang.Byte java.lang.Number
char java.lang.Character java.lang.Object
boolean  java.lang.Boolean java.lang.Object

1.2 8种基本数据类型包装类

1.2.1 Number及其主要方法

    · 抽象类Number是Byte、Double、Float、Integer、Long和Short类的父类;

    · Number的子类必须提供将表示的数值转换为byte,double,float,int,long和short的方法;

        doubleValue() 以double形式返回指定的数值

        intValue()    以int形式返回指定的数值

        floatValue()    以float形式返回指定的数值

Number及其主要方法(续1)

    /** 测试Number的intValue方法和doubleValue方法 */
    public void testIntValueAndDoubleValue(){
        Number d=123.45;
        Number n=123;
        //输出d和n对象所属的类型
        System.out.println(d.getClass().getName());//java.lang.Double
        System.out.println(n.getClass().getName());//java.lang.Integer
        
        int intValue=d.intValue();
        double doubleValue=d.doubleValue();
        System.out.println(intValue+","+doubleValue);//123,123.45
        
        intValue=n.intValue();
        doubleValue=n.doubleValue();
        System.out.println(intValue+","+doubleValue);//123,123.0
    }

1.2.2 Integer常用功能

    · 该类提供了多个方法,能在int类型和String类型之间互相转换,还提供一些常量例如:

        static int MAX_VALUE 值为231  -1的常量,表示int类型能表示的最大值

        static int MIN_VALUE 值为-231的常量,表示int类型能表示的最小值

Integer常用功能(续1)

    · Integer的静态方法parseInt用于将字符串转换为int。

    /** String转换为int */
    public void testParseInt(){
        String str="123";
        int value=Integer.parseInt(str);
        System.out.println(value);//123
        str="水电费";
        //会抛出NumberFormatException
        //value=Integer.parseInt(str);
    }

    如果字符串的格式不是整数形式,将无法转换。

1.2.3 Double常用功能

    · 在Double类的对象中包装一个基本类型double的值

    · 构造方法

        - Double(double value)

        - Double(String s)

    · 方法

        - double doubleValue()返回此Double对象的double值

        - static double parseDouble(String s)返回一个新的double值,该值被初始化为用指定的String表示的值

Double常用功能(续1)

    /** String转换为double */
    public void testParseDouble(){
        String str="12345.00";
        double value=Double.parseDouble(str);
        //12345.0
        System.out.println(value);
        
        str="¥12345.00";
        
        //会抛出NumberFormatException
        //value=Double.parseDouble(str);
    }

1.2.4 自动装箱和拆箱操作

    · 从Java5.0版本以后加入到了autoboxing功能

    · 自动"拆箱"和"装箱"是依靠JDK5的编译器在编译期的"预处理"工作

    · 下落代码写法均为正确形式:

        Integer a=100;    //装箱

        Integer b=200;    //装箱

        Integer c=a+b;    //拆箱再装箱

        double d=c;    //拆箱

自动装箱和拆箱操作(续1)

    · 装箱和拆箱是"编译器"认可的,而不是虚拟机。编译器在生成类的字节码时插入必要的方法调用

        - Integer a=100 => Integer a=Integer.valueOf(100)

        - Integer b=200 => Integer b=Integer.valueOf(200)

        - Integer c=a+b=>Integer c=Integer.valueOf(a.intValue()+b.intValue())

        -int d=c =>int d=c.intValue()

自动装箱和拆箱操作(续2)

    image.png

关注公众号,获取学习视频

发布了139 篇原创文章 · 获赞 82 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/houjunkang363/article/details/102560786