6.3. 包装类与自动装箱.拆箱

一. 包装类

java中为8种基本数据类型对应准备了8种包装类型。8种包装类型属于引用类型,父类是Object。

重点以java.lang.Integer为代表学习

1. 八种包装类都是什么

8种基本数据类型对应的包装类型名是什么?

基本数据类型包装类型父类
bytejava.lang.ByteNumber
shortjava.lang.ShortNumber
intjava.lang.IntegerNumber
longjava.lang.LongNumber
floatjava.lang.FloatNumber
doublejava.lang.DoubleNumber
booleanjava.lang.BooleanObject
charjava.lang.CharacterObject

2. Number的共同方法(装箱与拆箱)

八种包装类中其中6个都是数字对应的包装类,他们的父类都是Number

Number是一个抽象类,无法实例化对象。

public class IntegerText {
    public static void main(String[] args) {
        //100这个基本数据类型,进行构造方法的包装达到了:基本数据类型引用数据类型的转换
        //基本数据类型-(转换为)->引用数据类型(装箱)
        Integer i = new Integer(100);
        Float f = i.floatValue();
        System.out.println(f);//输出结果:100.0


        //将引用数据类型--(转换为)->基本数据类型(拆箱)
        int reValue = i.intValue();
        System.out.println(reValue);//输出结果:100

    }
}
image.png|350

3. Integer的构造方法

关于Integer类的构造方法,有两个:

  • 1.Integer(int)
  • 2.Integer(String)
public class IntegerText {
    public static void main(String[] args) {
        //将数字100转换成Integer包装类型(int-->Integer)
        Integer x = new Integer(100);
        System.out.println(x);
        
        //将String类型的数字,转换成Integer包装类型(String-->Integer)
        Integer y = new Integer("123");
        System.out.println(y);

    }
}
image.png|375

4. Double的构造方法

//double-->Double
Double d = new Double(1.23);
System.out.println(d);

//String-->Double
Double e =new Double(3.14);
System.out.println(e);
image.png|375

5. 通过访问包装类的常量,来获取最大、小值

System.out.println("int的最大值" + Integer.MAX_VALUE);
System.out.println("int的最小值" + Integer.MIN_VALUE);
System.out.println("byte的最大值" + Byte.MAX_VALUE);
System.out.println("byte的最小值" + Byte.MIN_VALUE);

运行结果:

image.png|346

6. 自动装箱和自动拆箱

自动装箱:基本数据类型自动转换成包装类。

自动插箱:包装类自动转换成基本数据类型

//自动装箱
//100是基本数据类型
//x是包装类型
//基本数据类型-自动转换为->包装类型:自动装箱
Integer x = 100;

//自动拆箱
//x是包装类型
//y是基本数据类型
//包装类型-(自动转换为)->基本数据类型:自动拆箱
int y = x;
Integer z = 1000;
System.out.println(z + 1);

上面的代码为什么没有报错呢?

+两边要求是基本数据类型的数字,z是包装类,不属于基本数据类型,这里会进行自动拆箱。将z转换为基本数据类型

==不会触发自动拆箱机制,只有±/等运算符才能触发*

java中为了提高程序的执行效率,将[-128到127]之间所有的包装对象提前创建好,放到一个方法区的“整数型常量池”当中了,目的是只要用这个区间的数据不需要再new了,直接从整数型常量池中取出来。

public class IntegerText {
    public static void main(String[] args) {


        Integer a = 128;
        Integer b = 128;
        System.out.println(a == b);

        Integer x = 127;
        Integer y= 127;
        System.out.println(x == y);
        //
    }
}
image.png|137

原理::x变量中保存的对象的内存地址和y变量的对象的内存地址是一样的。

image.png

7. Integer常用方法

手动装箱:Integer x = new Integer()
手动拆箱:int y = x.intValue( )

Integer i = new Integer("中国人");

运行错误,不是一个数字不能包装成Integer

重点方法:static int parseInt(String s) ,静态方法,传参String,返回int

        int reValue = Integer.parseInt("123");//String -转换-> int
        System.out.println(reValue + 100);//输出结果为:223
        
       double reValue2 = Double.parseDouble("3.14");
        System.out.println(reValue2 + 1);//4.140000000000001(精度问题)

        float reValue3 = Float.parseFloat("1.0");
        System.out.println(reValue3 +1);
image.png|450

将十进制转换成二进制字符串(静态的):static String toBinaryString(int i) 将十进制转换成十六进制进制字符串(静态的):static String toHexString(int i) 将十进制转换成八进制进制字符串(静态的):static String toOctalString(int i)

8. String、int、Integer类型互换

静态的:int–>Integer
static Integer valueOf(int i)

静态的:String–>Integer
static Integer valueOf(String s)

public class IntegerText {
    public static void main(String[] args) {
         // String --> int
        int i1 = Integer.parseInt( "10"); // 1是100数字
        System.out.println(i1 + 1); // 101

        // int --> String
        String s2 = i1 + ""; // "100"字符串
        System. out.println(s2 + 1); // "1001"

        // int --> Integer
        //自动装箱
        Integer x = 1000;

        // Integer --> int
        //自动拆箱
        int y = x;

        // String --> Integer
        Integer k = Integer.valueOf("123");

        // Integer --> String
        String e = String.valueOf(k);
    }
}

转换速记图:

image.png|625

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇