Java---面向对象---自动装箱和拆箱

71 篇文章 0 订阅
35 篇文章 0 订阅
自动装箱:就是把基础数据类型自动封装并转换成对应的包装类的对象。

拆 箱 :就是把包装类的对象自动解包并转换成对应的基础数据类型。

话不多少,直接来代码:

import org.junit.Test;

public class Demo {
	
	@Test
	public void demo1(){
		Integer a = 5; //装箱  Java自动帮我们把5封装成一个Integer对象赋给引用变量a
		               // a = new Integer(5)
		System.out.println(a);
		
		int  b = a; //拆箱   Java自动帮我们把对象a中的整数值取出来赋给变量b
		System.out.println( b+5 );
		
	}
	
	//凡是包装类对象和基本数据类型进行比较,都会自动拆箱
	//对于Integer包装类,如果数据值在一个字节[-128,127]范围内,存储在栈中,超出该范围存储在堆中
	@Test
	public void demo2(){
		Integer i1 = 100;//装箱
		System.out.println( i1==100 ); //true
		
		Integer i2 = 100;//装箱
		//在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用。
		System.out.println( i1==i2 ); //true
		
		
		Integer i3 = 200;
		Integer i4 = 200;
		
		//如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用。
		System.out.println( i3==i4 );//false
		
		System.out.println( i3==200 );//true
	}
	
	/*
	 * 凡是 new出来的字符串,不能用"=="来判断它是否等于另一个字符串,因为都是false
	 * 凡是String类中返回字符串的方法,所返回的字符串都是重新new出来的
	 * 以后判断String都有equals()
	 * 
	 */
	
	@Test
	public void demo3(){
		String s1="2";
		String s2="2";
		System.out.println(s1==s2);//true
		String s3 = new String("2");
		System.out.println(s1==s3);//false
		
		String s4 = "23".substring(0, 1);
		System.out.println("s4="+s4);
		System.out.println( s1==s4 );//false
		System.out.println( s3==s4 );//false
		System.out.println( s4=="2");//false
		
		Scanner sc = new Scanner(System.in);
		String name=sc.nextLine();
		//if(name=="jack"){//bug: 这一句永远不会出现true
		if(name.equals("jack")){//这一句在name可能会是null的情况下,有bug
		//没有bug的写法: if(name!=null && name.equals("jack")){ //更好的写法: if( "jack".equals(name) )
		   System.out.println("OK...");
		}
		
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值