包装类(Integer、装箱与拆箱、String、int、Integer类型互换)

包装类

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

    }
}

在这里插入图片描述

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);

    }
}

在这里插入图片描述

3、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);

在这里插入图片描述

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

        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);
       

运行结果:
在这里插入图片描述

5、自动装箱和自动拆箱

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

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

//自动装箱
//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);
        //

    }
}

在这里插入图片描述
原理::x变量中保存的对象的内存地址和y变量的对象的内存地址是一样的。
在这里插入图片描述

6、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);



在这里插入图片描述
将十进制转换成二进制字符串(静态的):static String toBinaryString(int i)
将十进制转换成十六进制进制字符串(静态的):static String toHexString(int i)
将十进制转换成八进制进制字符串(静态的):static String toOctalString(int i)

7、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);
    }
}

转换速记图:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值