包装类

1.包装类

包装类(Wrapper):针对八种基本数据类型定义相应的引用类型

有了类的特点,就可以调用类的方法

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

Byte、Short、Integer、Long、Float、Double的父类都是Number

常用类1 常用类2 常用类3

1.1 包装类和基本数据类型的转换

  • 在jdk5前的手动装箱和拆箱方式。

    装箱:基本类型→包装类型;拆箱:包装类型→基本类型

  • 在jdk5以后(含jdk5)的自动装箱和拆箱方式

  • 自动装箱底层调用的是valueOf方法,如Integer.valueOf()

//演示int <--> Integer的装箱拆箱

//jdk5前
//手动装箱 int->Ingeter
int n1 = 100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);

//手动拆箱 Ingeter->int
Integer j = new Integer(99);
int i = j.intValue();


//jdk5后,就可以自动拆装箱
int n2 = 200;
//自动装箱 int->Ingeter
Integer integer2 = n2;  //底层使用的是Integer.valueOf(n2)

//自动拆箱 Ingeter->int
int n3 = integer2;    //底层使用的是intValue()

小测试:输出结果是什么?

Object obj1 = true?new Integer(1):new Double(2.0);
Systen.out.println(obj1);

因为三元运算符要是视为一个整体,double提高优先级

输出1.0,而不是1

1.2 包装类和String类型的转换

//以Integer和String为例

//包装类 -> String
Integer i = 100;
//方式1
String str1 = i + "";
//方式2
String str2 = i.toString();
//方式3
String srt3 = String.valueOf(i);

//String -> 包装类
String str4 = "12345";
//方法1
Integer i2 = Integer.parseInt(str4);//使用到自动装箱
//方法2
Integer i3 = new Integer(str4);//构造器

1.3 包装类常用方法

Integer类和Character类的常用方法

常用类4

输出结果是什么?

public void method1(){
    Integer i = new Ingeter(1);
    Integer j = new Ingeter(1);
    System.out.println(i == j); //false,两个new出来的对象不相等
    
    Integer m = 1; //底层Integer.valueOf(1)
    Integer n = 1; // 所以这里主要看范围,-128~127就直接返回,否则new Ingeter()
    System.out.println(m == n); //true
    
    Integer x = 128;
    Integer y = 128;//底层Integer.valueOf(128)
    System.out.println(x == y); //false,128属于new Ingeter()
}
Integer i = 127;
int j = 127; 
System.out.println(i == j);//true,只要有基本数据类型,判断的是值是否相等
posted @ 2025-08-19 17:30  lu璐  阅读(12)  评论(0)    收藏  举报