包装类

包装类

Java核心库提供的包装类型可以把基本类型包装为class

基本数据类型 包装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

Byte,Short,Integer,Long,Float,Double的父类是Number

装箱拆箱

自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5)

这种直接把int变为Integer的赋值写法,称为自动装箱(Auto Boxing),反过来,把Integer变为int的赋值写法,称为自动拆箱(Auto Unboxing)。

Integer n = 100; // 编译器自动使用Integer.valueOf(int)
int x = n; // 编译器自动使用Integer.intValue()
  • 自动装箱和自动拆箱只发生在编译阶段,目的是为了少写代码。

    Double d=100d;//ok 自动装箱 Double.valueOf(100d);
    
    Object obj1=true?new Integer(1):new Double(2.0);
    System.out.println(obj1);//1.0
    //三元运算符是一个整体 提升到最高,其实是Double类
    

包装类(Integer)-->String

Integer i=100;//自动装箱
//方式1
String str1=i +"";//对i没有影响,不改变
//方式2
String str2=i.toString();
//方式3
String str3=String.valueOf(i);

String-->包装类(Integer)

String str4="1234";
Integer i1=Integer.parseInt(str4);//自动装箱
Integer i3=new Integer(str4);//构造器

包装类的常用方法

使用时查看文档

Integer创建机制

//示例1 
Integer i1=new Intrger(127);
Integer i2=new Intrger(127);
System.out.println(i1==i2);//False new 的是对象
//示例2
Integer i3=127;//底层Integer.valueOf(127)
Integer i4=127;//查看源码 范围是-128~127
System.out.println(i3==i4);//true 
//示例3
Integer i5=128;//底层Integer.valueOf(127)
Integer i6=128;//查看源码 范围是-128~127
System.out.println(i5==i6);//false 超出范围
//示例4
Integer i7=127;//底层Integer.valueOf(127) 数组里面
Integer i8=new Integer (127);
System.out.println(i7==i8);//false 
//示例5
Integer i9=127;//底层Integer.valueOf(127)
Int i10=127;
System.out.println(i9==i10);//true 只要有基本数据类型,判断就是值是否相等

对两个Integer实例进行比较要特别注意:绝对不能用==比较,因为Integer是引用类型,必须使用equals()比较。

    public static void main(String[] args) {
        Integer x = 127;
        Integer y = 127;
        Integer m = 99999;
        Integer n = 99999;
        System.out.println("x == y: " + (x==y)); // true
        System.out.println("m == n: " + (m==n)); // false
        System.out.println("x.equals(y): " + x.equals(y)); // true
        System.out.println("m.equals(n): " + m.equals(n)); // true
    }
}

posted @ 2022-04-21 20:06  兔mm  阅读(32)  评论(0编辑  收藏  举报