包装类 -- 自动拆箱和自动装箱 -- 享元模式

包装类

包装类有哪些

基本数据类型 其对应的包装类(可以在API文档中查询到)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

为什么要使用包装类

基本数据不能调用方法

Integer方法

static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。
static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析。
Integer(int value)
构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s)
构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值

自动装箱和自动拆箱

装箱 : 把一个基本数据类型的数据赋值给一个其对应的包装类的过程
拆箱 : 把一个包装类对象赋值给一个其对应的基本数据类型的变量的过程

Integer i = 10; //装箱 底层还是把10转换成了 new Integer(10)
int t = new Integer(10); //拆箱

享元模式

享元模式 的时候在[-128,127]

享元模式:当在进行装箱的值在[-128,127]范围内时,内存中就不会新开辟空间,堆中会有一个缓存空间,里面存放着[-128,127]的数,当对象Integer的对象!当采用赋值方式,会先到缓存中查找是否有值缓存着,如果有,直接使用引用地址

public class test03 {
	public static void main(String[] args) {
		Integer i1=128;
		Integer i2=128;
		
		Integer i3 = 10;
		Integer i4 = 10;
		
		Integer i5= new Integer(20); //只要new 一定会在堆里面开辟空间   == 比较的地址值
		Integer i6=	new Integer(20); 
		
		System.out.println(i1==i2);
		System.out.println(i3==i4);
		System.out.println(i5==i6);
		
		System.out.println("------------------------");
		
		System.out.println(i1.equals(i2));// equals经过覆写  使用equals比较 比较的是表示的值
		System.out.println(i3.equals(i4));
		System.out.println(i5.equals(i6));
	}
}

结果为:

false
true
false
------------------------
true
true
true

/*[-128~127]缓存,对象Integer的对象!当采用赋值方式,会先到缓存中查找是否有值缓存着,如果有,直接使用引用地址 */
Integer i1 = 20;
Integer i2 = 20;
System.out.println(i1 == i2);//true此处不存在拆箱比较值,比较的是对象的地址
/但凡是new 都会在堆内存中,创建一个新的对象,对象的地址值不一样/
Integer i3 = new Integer(20);
Integer i4 = new Integer(20);
System.out.println("i3 == i1 "+(i3 == i1));//false
System.out.println(i3 == i4);//false
/*赋值范围超过缓存值的范围,享源模式中没有缓存值,则会自动创建对象, */
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6);
/*上面比较的都是Integer 对象 */
System.out.println(i1.equals(i2));//true
System.out.println(i1.equals(i3));//true
System.out.println(i3.equals(i4));//true
/*在强化,对象比较还是用equalsjava中Integer 已经覆写了equals */

发布了60 篇原创文章 · 获赞 9 · 访问量 1972

猜你喜欢

转载自blog.csdn.net/qq_40629521/article/details/104090240