Java-16包装数据类型

本文介绍了Java中的8种包装数据类型,重点讲解了自动装箱(如Integer.valueOf())和拆箱(intValue())的概念,以及Integer缓存池如何优化内存和性能。通过实例演示了int-String转换和Integer对象的创建与操作。
摘要由CSDN通过智能技术生成

包装数据类型

8种包装数据类型

Integer、Long、Float、Short、Byte、Character、Double、Boolean、BigInteger、BigDecimal,其中BigInteger、BigDecimal没有相对应的基本类型,主要用于高精度运算。

BigInteger支持任意精度BigDecimal支持任意精度带小数点的运算。

//byte Byte
//short Short
//int  Integer
//long Long
//float Float
//double Double
//char  Character
//boolean Boolean
public class Demo01 {
	public static void main(String[] args) {		
		//int i=100;		
		//换算成二进制
		//Integer(int value) 
		Integer integer=new Integer(99);
				
		//static String toBinaryString(int i) 返回二进制
		System.out.println(Integer.toBinaryString(100));
		
		//十六进制
		System.out.println(Integer.toHexString(100));
		
		//int的最大范围
		System.out.println(Integer.MAX_VALUE);		
	}
	
}

int-String的相互转换
//int-String的相互转换
public class Demo01 {
	
	public static void main(String[] args) {
		
		
		//int-String

		//方式一
		int number=99;
		String s1=""+number;
		
		//方式2
//		static String valueOf(int i) 
//        返回 int 参数的字符串表示形式。 
		String s2=String.valueOf(number);
		
		//方式3
		Integer i=new Integer(number);
		String s3=i.toString();
		
		//方式4
//		static String toString(int i) 
//        返回一个表示指定整数的 String 对象。 
		String s4=Integer.toString(i);
		
		
		//String --- int
		String s5="100";
		
		Integer i1=new Integer(s5);
		
		//int intValue() 
        //以 int 类型返回该 Integer 的值。 
		int i3=i1.intValue();
		
		//方式2
		//static int parseInt(String s)  
		int i2 = Integer.parseInt(s5);
		
	}

}


自动拆箱和装箱

自动装箱是Java编译器在Java原生类型和对应的对象包装类型上做的自动转换。

把int装换成Integer double转换成Double

如果反过来就叫自动拆箱。

例、一般我们创建一个类的实例对象时会这样:

Class a =new Class(parameter)

当我们创建一个Integer对象时,直接可以这样:

Integer i=100;

实际上,执行上面代码时系统为我们执行了:Integer i=Integer.valueOf(100);

这就是基本数据类型的自动装箱功能。

自动拆箱:就是将对象中的基本数据类型从对象中自动取出。如下

Inter i = 10;//装箱
int t = i;//拆箱,实际上执行了int t = i.intValue()
public class Demo02 {

	
	public static void main(String[] args) {

		//		static Integer valueOf(int i) 
//        返回一个表示指定的 int 值的 Integer 实例 
		//Integer i = Integer.valueOf(99);
		
		//自动装箱 通过Integer.valueOf()自动把一个基本数据类型转换成包装数据类型 
		Integer i=99;
		
		
		//自动拆箱   把一个包装数据类型通过intValue()变成一个基本数据类型
		//先拆箱进行计算,然后把结果在进行装箱
		//i = Integer.valueOf(i.intValue() + 200);
		i=i+200;
		
		
		Long l=99l;
		
	}

}


Integer缓冲池

Integer缓存是Java5中引入的一个有助于节省内存、提高性能的特性。

Integer中有个静态类IntegerCache,里面有一个cache[ ],这就是Integer常量池,其大小为(-128~127)。

Integer初始化的时候会创建一个数组,这个数组会提前把-128到127的包装数据类型都提前放到数组里面,如果现在调用Intger.valueOf方法,符合这个范围不会new新的Integer对象,会从数组中直接获取。如果不是这个范围才会new

public class Demo03 {
	
	public static void main(String[] args) {
		
		Integer i1=new Integer(127);
		Integer i2=new Integer(127);
		
		System.out.println(i1==i2);//false
		System.out.println(i1.equals(i2));//true
		
		System.out.println("----------");
		
		Integer i3=new Integer(128);
		Integer i4=new Integer(128);
		System.out.println(i3==i4);//false
		System.out.println(i3.equals(i4));//true
		
		
		System.out.println("----------");
		
//		Integer i5 = Integer.valueOf(128);
//	    Integer i6 = Integer.valueOf(128);		
		Integer  i5=128; //自动装箱
		Integer  i6=128;
		System.out.println(i5==i6);//false
		System.out.println(i5.equals(i6));//true
		
		System.out.println("----------");
			
//		Integer i7 = Integer.valueOf(127);
//	    Integer i8 = Integer.valueOf(127);
		
		Integer.valueOf(127);
		
		Integer i7=127;
		Integer i8=127;
		System.out.println(i7==i8);//true
		System.out.println(i7.equals(i8));//true	
	}

}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹿鹿熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值