当前位置 博文首页 > one day one day的博客:自动拆箱与装箱

    one day one day的博客:自动拆箱与装箱

    作者:[db:作者] 时间:2021-08-02 15:46

    自动拆箱与装箱


    ??一、自动拆箱与装箱

    public class Test {
    	
    	public static void main(String[] args) {
    		
    		//自动装箱与自动拆箱
    		int a= 7;
    		Integer b = a;//自动装箱,基本数据类型转化为包装类
    		int c = b;//自动拆箱,包装类转化为基本数据类型
    		
    	}
    }
    

    ?二、包装类数据缓存

    public class Test {
    	
    	public static void main(String[] args) {
    		
    		System.out.println("***************************Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存");
    		
    		//Byte、Long、Integer、Short对-128~127之间的数据进行了缓存,在常量池里面
    		Integer aa = 127;
    		Integer bb = 127;
    		System.out.println(aa==bb);//在-128~127之间,输出为true
    		
    		Integer dd = 128;
    		Integer ee = 128;
    		System.out.println(dd==ee);//不在-128~127之间,输出为false
    		
    		
    		//char所对应包装类的数据缓存范围为 0~127
    		Character cc = 127;
    		Character ff = 127;
    		System.out.println(cc==ff);//在 0~127之间,输出为true
    		
    		cc = 128;
    	    ff = 128;
    		System.out.println(cc==ff);//不在0~127之间,输出为false
    		
    		
    		//Double、Float没有数据缓存范围
    		Double gg = 127.0;
    		Double hh = 127.0;
    		System.out.println(gg==hh);//没有数据缓存,输出为false
    		
    		
    		//Boolean数据缓存为true和false
    		Boolean jj = true;
    		Boolean tt = true;
    		System.out.println(jj==tt);
    		
    		
    	}
    }
    

    三、基本数据类型包装类中的equals方法

    以Integer为例:

    public class Test {
    	
    	public static void main(String[] args) {
    	
    		//包装类中的equals方法,先比较基本数据类型包装类是否相同,不同则返回false,相同则比较值是否相同,相同为true,否则为false
    		Integer aa = 128;
    		Integer bb = 128;
    		Short cc= 128;
    		System.out.println(aa==bb);//不在-128~127之间,输出为false
    		System.out.println(aa.equals(bb));//aa、bb基本数据类型包装类相同,在比较值的大小时自动拆箱,变为int类型,大小相等,输出为true
    		System.out.println(aa.equals(cc));//aa、cc基本数据类型包装类不同,输出为false
    	}
    }
    

    结果

    注意:当基本数据类型包装类执行equals方法与对应的基本数据类型比较,比较的是值的大小

    public class Test {
    	
    	public static void main(String[] args) {
    	
    		Integer aa = 128;
    		int bb = 128;
    		short cc= 128;
    		System.out.println(aa==bb);//输出为true
    		System.out.println(aa.equals(bb));//输出为true
    		System.out.println(aa.equals(cc));//输出为false
    	}
    }

    ?

    cs