测试包装
package cn.tedu.API;
/*本类用于测试包装类*/
public class TestNumber {
//1 定义成员变量,注意设置成静态的,因为静态只能调用静态
static Integer i0;
public static void main(String[] args) {
// 2 打印Integer的默认值进行测试
System.out.println(i0);//null
//3 创建int类型对应的包装类Integer类型对象
Integer i1= new Integer(5);
Integer i11= new Integer(5);
System.out.println(i1==i11);//false
//4创建int类型对应的包装类Integer类型对象--方式二
/*Integer有一个高效的效果, 数据在: (-128~127)
* 在范围内,相同的数据只会存一次,后续再存都是使用之前存过的数据*/
Integer i2= Integer.valueOf(127);
Integer i3= Integer.valueOf(127);
System.out.println(i1==i2);//false
System.out.println(i2==i3);//true
//满足高效效果的3个条件: Integer valueOf -128~127
/*超过了范围-128~127之间*/
Integer i4= Integer.valueOf(300);
Integer i5 =Integer.valueOf(300);
System.out.println(i4==i5);//false
// 5 创建double类型对应包装类double的对象
Double d1 = new Double(3.14);
Double d2 = Double.valueOf(3.14);
Double d3 = Double.valueOf(3.14);
System.out.println(d1 == d2);
System.out.println(d2 == d3);
/*只有Integer的valueOf创建方式, 并且数据在-128~127才有高效效果
* Double是没有高效效果的*/
//测试常用方法
/*原因: parseInt作用是把String类型的数据转为int
* 所以"800"被转成了int类型数据800,就可以参与运算*/
System.out.println(i1.parseInt("800")+8);
System.out.println(d1.parseDouble("2.4")+1.2);
}
}
自动拆箱装箱
package cn.tedu.API;
/*本类用于测试自动装箱与自动拆箱*/
public class TestNumber2 {
public static void main(String[] args) {
//1 定义包装类型的数据
Integer i1 = new Integer(127);
Integer i2= Integer.valueOf(127);
//2 现在的方式
/*1. 自动装箱: 编译器会自动把基本类型int5包装成包装类型Integer
* 然后交给Integer类型的引用类型变量i3来保存
* 自动装底层发生的代码: Integer.valueOf(5)
* valueOf()方向:int-->Integer*/
Integer i3=5;//不会报错, 这个现象就是自动装箱
/*自动拆箱: 编辑器会自动把包装类型的i1拆掉" 箱子 " ,变回基本类型的数据127
* 然后交给基本类型int的变量i4来保存
* 自动拆箱底层发生的代码: i1.intValue();
* intValue():的方向:Integer0-->int*/
int i4 = i1;//不会报错, 这个现象就是自动拆箱
}
}