包装类,自动装箱和自动拆箱


  概念:包装类就是把基本类型的数据类型转换成这一类的类型的数据(就不是普通类型了,是类的类型,比如Animal类型),这中类型的数据是引用类型的。

 

·基本类型与包装类对应表:

 

基本数据类型    包装类型

byte            Byte

short           Short

int             Integer

long            Long

char            Character

float           Float

double          Double

boolean         Boolean

 

·包装类转换原理是通过包装类的构造器实现的

  基本类型转换为包装类

  语法:包装类类型引用变量名字 = new 包装类构造器名(普通类型值)

 

·将包装类类型转换为基本类型,原理是提供了一个前缀为“基本类型名字加Value()”的方法。

  语法:基本类型变量名 = 包装类引用变量.基本类型变量Value();


例子:包转类与普通类型转换

public class Primitive2Wrapper
{
	public static void main(String[] args)
	{
		boolean bl = true;
		Boolean blObj = new Boolean(bl);	//基本类型转换为包装类

		int i = 5;
		Integer iObj = new Integer(i);	

		System.out.println(bl);
		System.out.println(iObj);

		//-----------------------------
		
		boolean b = blObj.booleanValue();	//包装类转换为基本类型
		int ii = iObj.intValue();

		System.out.println(b);
		System.out.println(ii);

	}
}

·自动装箱与自动拆箱

因为上面例子转换太繁琐所以Java1.5提供了自动装箱与自动拆箱功能。

自动装箱:可以把一个基本变量类型直接赋值给对应的包装类变量。

自动拆箱:就是把包装类变量赋值给基本类型变量。

 

 

例子:自动装箱拆箱

public class Auto
{
	public static void main(String[] args)
	{
		Integer iObj = 5;
		int i = iObj;

		System.out.println(iObj);	//自动装箱
		System.out.println(i);		//自动拆箱
	}
}


字符串与基本类型转换

字符串转换为基本类型语法:①利用包装类提供的“基本类型  变量  = 包装类型.parseXxx(String值)”方法实现,Xxx为基本类型声明关键字但是开头要大写。

                          ②利用包装类提供的“基本类型  变量  = new Xxx(String值)”

 

基本类型转换为字符串语法:①“String 引用变量 =  String。valueOf(值)”

                          ②“String 引用变量 =  基本类型值  +  “””

 

例子:基本类型与Sting之间


public class Primitive2String
{
	public static void main(String[] args)
	{
		String intStr = "123";
		int i = new Integer(intStr);	//String转换为基本类型
		int i1 = Integer.parseInt(“111”);	//String转换为基本类型
		System.out.println(i);
		System.out.println(i1);

		String is = String.valueOf(i);	//基本类型转String类型
		String ia = 2 + “”;	//基本类型转String类型
		System.out.println(is);
		System.out.println(ia);

	}
}

·包装类数值比较

  Integer包装类存在于一个名为cache的数组中,数组元素为-128到127之间,因此将-128~127之间的某个元素自动装箱成Integer包装类时它们都指向cache数组的同一个元素,所以如果使用“==”去比较Integer的值的话,当值在-128~127之间,那么他们就是同一个元素,值就会相等。否则因为包装类是引用类型的,所以不在这个范围的值就会创建一个新对象来创建包装类,因此他们使用“==”的结果就不想打,打印出fales

 

例子:包装类数值比较

public class WrapperCom
{
	public static void main(String[] args)
	{
		Integer iObj = 5;
		Integer iaObj = 5;

		Integer ibObj = 128;
		Integer icObj = 128;	//大于127了,这个包装类的值不在cache数组可容纳的值内,所以它单独创建对象来存储这个值,所以下面的比较会输出false

		System.out.println(iObj == iaObj);		//这里除数true
		System.out.println(ibObj == icObj);		//这里输出false
		System.out.println((new Integer(2) == new Integer(2)));		这里输出false。(使用==比较2个数,如果是引用变量则指向同一个对象(同一块内存)才相等)
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值