包装类
概念:
1.对基本类进行封装,提供一些其他的功能
2.基本类型与包装类型的对应类型(int->Integer/char->Character)
3.Integer-创建方式
new Integer(5); --没有高效的效果
Integer.valueOf(5); --有高效的效果,限制范围:[-128~127]
TIPS: 只有方式二的指定范围才有高效的效果,在此范围内,数据只会存一次,后续再存都是直接使用之前存过的数据
4.double-创建方式
new Double(5.5);
Double.valueOf(5.5);
TIPS:Double就没有高效的效果,不论哪种创建方式
5.把字符串转成对应的包装类型,方便参与计算
i1.parseInt(“600”)+10.5–>610.5 --i1是Integer类型的对象
d1.parseDouble(“2.2”)+1–>3.2 --d1是Double类型的对象
- 自动装箱 : 基本类型 -> 包装类型
自动拆箱:包装类型 -> 基本类型
package cn.tedu.string;
public class TestNum {
static Integer i0;
public static void main(String[] args) {
int a = new Integer(5);
Integer.valueOf(5);
Integer i1 = new Integer(5);
Integer i2 = new Integer(5);
System.out.println(i1==i2);//false-->==比较的是地址值,这里两个是对象
Integer i3 = Integer.valueOf(127);
Integer i4 = Integer.valueOf(127);
System.out.println(i3==i4);//true-->高效
Integer i5 = Integer.valueOf(400);
Integer i6 = Integer.valueOf(400);
System.out.println(i5==i6);//false-->超出范围 失效
System.out.println(i2.parseInt("510")+10);//520->String类型 不能与int类型直接相加
System.out.println(i3.parseInt("600")*10);//6000->int类型可以与int类型做运算
Double d1 = new Double(5.5);
Double d2 = new Double(5.5);
System.out.println(d1==d2);//false 地址不同
Double d3 = Double.valueOf(6.6);
Double d4 = Double.valueOf(6.6);
System.out.println(d3==d4);//false->高效只在byte范围生效,double超出范围
System.out.println(d1==d4);//false->两种不同的创建对象
}
}
包装类睡前再练习
package cn.qinghe.review;
public class TestNum {
static Integer t;
public static void main(String[] args) {
Integer i = new Integer(5);
Integer i1 =new Integer(5);
System.out.println(i==i1);//false 比较的是两个的地址值(==比较的是地址值)
Integer i2 =Integer.valueOf(5);
Integer i3 =Integer.valueOf(5);
System.out.println(i2==i3);//true 创建i3时调用了创建对象i2时的地址,这里在高效的范围内(?)
Integer i4 =Integer.valueOf(600);
Integer i5 =Integer.valueOf(600);
System.out.println(i4==i5);//false 高效的生效范围在[-128~127]
System.out.println(i1.parseInt("510")+10);//520 此处510是String类型
System.out.println(i2.parseInt("52")*10);//520 此处52为int类型
Double d = new Double(6.6);
Double d1 = new Double(6.6);
System.out.println(d==d1);//false 同i==i1
Double d2 = Double.valueOf(7.8);
Double d3 = Double.valueOf(7.8);
System.out.println(d2==d3);//false 同下
Double d4 =Double.valueOf(600);
Double d5 =Double.valueOf(600);
System.out.println(d4==d5);//false double类型不在高效生效的范围内
System.out.println(d1==d2);//false 两种不同的创建方法
}
}