一、概述
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()
(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