包装器类的概念
1.基本概念
- 为了能将基本类型视为对象来处理,并能连接相关的方法,提供了包装器类。
- 八种基本数据类型对应的包装器类分别为:
Byte、Short、Character、Integer、Long、Float、Double、Boolean。
2.创建包装器类对象
-
构造方法
new
Integer i1 = new Integer(5);//value属性的值不可以更改指向 System.out.println(i1); Integer i2 = new Integer("123");//字符串内只能包含数字 System.out.println(i2); //传参传对应基本数据类型的数字或,只包含对应类型数字的字符串
-
调用
valueOf
方法Integer i3 = Integer.valueOf("456"); System.out.println(i3); Double d3 = Double.valueOf("2.23"); System.out.println(d3);
3.特点
- 包装器类型对象一旦赋值,其值不能再改变,但可以改变其指向
拆箱装箱、判等与重载匹配
对包装器类型对象进行操作
1.手动
//包装器对象参与运算(++ --)
Integer i4 = Integer.valueOf(100);
//拆箱操作
int num1 = i4.intValue();
num1 ++;//101
//装箱操作
i4 = Integer.valueOf(num1);//修改i4引用,指向自增以后的新值
System.out.println(i4);
2.自动
//JDK1.5之后可以省略拆装箱操作
Integer i5 = new Integer(789);
i5 ++;//新开辟内存空间
System.out.println(i5);
3.包装器对象的判等
//包装器对象的判等(==、equals)
//Double d4 = new Double(6.26);
//Double d5 = new Double(6.26);
Double d4 = 3.14;//隐含自动装箱操作
//相当于 Double d4 = Double.valueOf(3.14);
Double d5 = 3.14;
System.out.println("==:" + (d4 == d5));//判是否指向同一个对象
System.out.println("equlas:" + d4.equals(d5));
//Integer i6 = new Integer(10);
//Integer i7 = new Integer(10);
Integer i6 = 200;
//Integer i5 = Integer.valueOf(200);
//缓存了-128~127之间的对象,传参在此范围内不会新建对象,不在才会新建
Integer i7 = 200;
System.out.println("==:" + (i6 == i7));//判是否指向同一个对象
System.out.println("equlas:" + i6.equals(i7));
4.重载方法匹配顺序
-
单参数
- 1.精确匹配
- 2.如果实参属于基本数据类型,加宽以后能匹配
- 3.基本数据类型装箱以后能够匹配
- 4.基本数据类型装箱后,再向上转型如果能匹配
-
多参数
- 精确匹配
- 如果实参属于基本数据类型,加宽以后能匹配
- 基本数据类型装箱以后能够匹配
- 基本数据类型装箱后,再向上转型如果能匹配
- 上面都不匹配的情况下才会去匹配可变元参数