java——基本数据类型包装类

八种基本数据类型的包装类,分为两大类型:
Number:Integer、Short、Long、Double、Float、Byte都是Number的子类,表示一个数字。
Object:Character、Boolean都是Object的直接子类。

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

装箱及拆箱操作:
将一个基本数据类型转换为包装类,那么这样的操作称为装箱操作。将一个包装类转换为一个基本数据类型,这样的操作称为拆箱操作。

方法				描述
byteValue()			Byte->byte
doubleValue()		Double->double
floatValue()		Float->float
intValue()  		Integer->int
longValue()			Long->long
shortValue()		Short->short

示例:

class Demo1 {
	public static void main(String[] args) {
		//把基本数据类型转换为包装类,称为自动装箱
		Integer i1 = new Integer(10);
		//把包装类转换为基本数据类型,称为自动拆箱
		int i2 = i1.intValue();
	}
}

转型操作:
在包装类中,可以将一个字符串变为指定的基本数据类型,一般在输入数据时会使用较多。
在Integer类中将String变为int型数据:public static int parseInt(String s)
在Float类中将String变为float型数据:public static float parseFloat(String s)

注意:转型操作时,字符串必须由数字组成,否则会出现错误。

示例:

class Demo2{
	public static void main(String[] args) {
		//把数值字符串转换为int类型
		String num1 = "12";
		int i1 = Integer.parseInt(num1);//1     建议用parseInt转换,因为2比1多做了一步(拆箱)
		
		int i2 = Integer.valueOf(num1);//2    valueOf方法返回的是Integer类型,再转换成int,要多做一步,效率相对低
	}
}

享元模式(Flyweight Pattern):
它使用共享对象,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似对象;它适用于当大量对象重复因而导致使用大量内存的时候,通常对象中的部分状态是可以分享的。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。运用共享技术能有效的支持大量细粒度的对象。

示例:

class Demo3 {
	public static void main(String[] args) {
		Integer x1 = new Integer(10);
		Integer x2 = new Integer(10);
		System.out.println(x1==x2);
		System.out.println(x1.equals(x2));
		
		Integer x3 = new Integer(128);
		Integer x4 = new Integer(128);
		System.out.println(x3==x4);
		System.out.println(x3.equals(x4));
		
		Integer x5 = 10;
		Integer x6 = 10;
		System.out.println(x5==x6);
		System.out.println(x5.equals(x6));
		
		Integer x7 = 128;
		Integer x8 = 128;
		System.out.println(x7==x8);
		System.out.println(x7.equals(x8));

		Integer x9 = 127;
		Integer x10 = 127;
		System.out.println(x9==x10);
		System.out.println(x9.equals(x10));
	}
}

输出结果:

false
true
false
true
true
true
false
true
true
true

解释:
一个字节以内的数,java认为是你经常使用的数,用享元模式把这些数做了缓存。例如,把10赋给x5之后,10会被放在常量池里。当x6要用到10时,先从常量池的共享对象里找有没有10,如果有10,x6直接指向10,所以(x5==x6)的结果是true。超过一个字节的数,例如:x7 = 128,就不在享元范围内,相当于new了一个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值