19-基本数据类型对象包装类

一、概述

1、用于描述基本数据类型的类叫做基本数据类型对象包装类

2、基本数据类型对象包装类有:Byte、Short、Integer、Long、Float、Double、Character、Boolean

二、Number

1、抽象类Number是BigDecimal、BigInteger、Byte、Short、Integer、Long、Float、Double类的父类

2、Number只有一个空参的构造方法:Number()

3、方法:返回xxx类型的数值,可能会涉及到舍入或取整

(1)byte byteValue()

(2)short shortValue()

(3)abstract int intValue()

(4)abstract long longValue()

扫描二维码关注公众号,回复: 2249419 查看本文章

(5)abstract float floatValue()

(6)abstract double doubleValue()

三、Integer

1、public final class Integer:Integer类不能被继承,即不能有子类

2、字段

(1)static int MAX_VALUE:int类型能够表示的最大值

(2)static int MIN_VALUE:int类型能够表示的最小值

(3)static int SIZE:以二进制补码形式表示int值的比特位数

(4)static Class<Integer> TYPE:基本类型int的Class实例

3、构造函数

(1)Integer(int value)

(2)Integer(String s) throws NumberFormatException:构造一个新分配的Integer对象,它表示String参数所指示的int值

注:s是纯数字的字符串,否则抛出异常

4、方法

(1)int compareTo(Integer anotherInteger):在数字上比较两个Integer对象

(2)static Integer decode(String nm) throws NumberFormatException:将String解码为Integer。即返回nm所表示的int值的Integer对象

四、基本数据类型与String字符串的相互转换

1、基本数据类型最常用的情景:基本数值和字符串之间的相互转换

2、基本数据类型 --> String:

(1)String(基本数据类型 value):String的构造函数

(2)用"+"将基本类型与空字符串("")连接

(3)String类的方法:static String valueOf(基本数据类型 value)

3、String --> 基本数据类型: 

(1)Integer(String s):Integer的构造函数

(2)static int parseInt(String s, int radix) throws NumberFormatException:radix是有符号的十进制参数s的基数/进制数

注:声明NumberFormatException数字格式异常,就是想让调用者处理。利用该异常可以判断输入的字符串是否是数字。是数字,转换没问题,不是数字,报错。比一位一位判断字符串方便

(3)static Integer valueOf(String s, int radix) throws NumberFormatException

五、基本数据类型和包装类的相互转换

1、基本数据类型 --> 包装类:

(1)Integer(int value)

(2)static Integer valueOf(int i)

2、包装类 --> 基本数据类型

(1)int intValue()

六、自动拆箱装箱

1、Integer有两个构造函数:Integer(int value)和Integer(String s),创建Integer对象时,先将String类型参数s转换成int类型,再进行对象的封装

2、Integer覆盖了Object的equals()方法,比较的是数值相同

        Integer a = new Integer("123");
        Integer b = new Integer(123);
        System.out.println(a==b);           //false
        System.out.println(a.equals(b));    //true
        System.out.println(a.compareTo(b)); //0

3、Integer i = new Integer(4);    -->    Integer i = 4;     -- 自动装箱,简化书写

     i = i + 6;    -->    i = new Integer(i.intValue() + 6);    -- 自动拆箱 

4、Integer一简化,就比int多了一个引用数据类型值null

        Integer i = null;
        i = i + 6;  //java.lang.NullPointerException。在拆箱过程中,intValue()会发生空指针异常

5、自动拆箱装箱的利弊:

(1)好处:简化书写

(2)弊端:要对其进行健壮性判断

6、练习题

        Integer a = new Integer(127);
        Integer b = new Integer(127);
        System.out.println(a == b);         //false
        System.out.println(a.equals(b));    //true

        Integer aa = new Integer(128);
        Integer bb = new Integer(128);
        System.out.println(aa == bb);       //false
        System.out.println(aa.equals(bb));  //true

        Integer x = 127;
        Integer y = 127;
        System.out.println(x == y);         //true
        System.out.println(x.equals(y));    //true

        Integer xx = 128;
        Integer yy = 128;
        System.out.println(xx == yy);       //false
        System.out.println(xx.equals(yy));  //true

说明:

(1)new的对象,无论new多少个,地址都不相同

(2)JDK1.5之后,自动装箱。如果装箱的是一个字节,那么该数据会被共享,不会重新开辟空间 -- 节约空间

七、进制转换

1、十进制 --> 其他进制

(1)static String toBinaryString(int i):十进制 --> 二进制

(2)static String toOctalString(int i):十进制 --> 八进制

(3)static String toHexString(int i):十进制 --> 十六进制

(4)static String toString(int i, int radix):十进制 --> radix进制

2、其他进制 --> 十进制

(1)static int parseInt(String s, int radix) throws NumberFormatException:radix是s的基数,s须为纯数字,否则报错

(2)static Integer valueOf(String s, int radix) throws NumberFormatException

八、总结

1、想转换为String/包装类,最基本的有两种方法:

(1)构造函数:String/包装类(被转换类型的参数)

(2)valueOf():static String/包装类 valueOf(被转换类型的参数)

2、进制转换

1、十进制 --> 其他进制:static String toString(int i, int radix)

2、其他进制 --> 十进制:static int parseInt(String s, int radix) throws NumberFormatException

猜你喜欢

转载自blog.csdn.net/ruyu00/article/details/80398526