java自动装箱和自动拆箱

3 篇文章 0 订阅

Java自动装箱和自动拆箱是Java语言的一颗语法糖。

下面说一下java的自动装箱和拆箱的例子

1. 深入理解java虚拟机上的一个例子

public static void testJvmBook(){
		Integer a =1 ;
		Integer b=2 ;
		Integer c= 3 ;
		Integer d = 3 ;
		Integer e=321 ;
		Integer f =321 ;
		Long g = 3l;
		
		System.out.println(c==d); //true 
		System.out.println(e==f); //false 
		System.out.println(c==(a+b)); //true
		System.out.println(c.equals(a+b)); //true
		System.out.println(g==(a+b));//true
		System.out.println(g.equals(a+b));//false
	}
	

输出结果:

  1. true
  2. false
  3. true
  4. true
  5. true
  6. false
仔细分析一下:1.结果为true,因为在-128-127之内的装箱操作的对象是重用的。
     2.结果为:false ,超出了-128-127的范围,此时装箱最后的对象是不重用的,他们会分别的创建对象。
    3.因为在遇到算术运算的时候,会发生自动的装箱和拆箱操作。
    4.同3

总结:
//自动装箱就是将基本数据类型封装成对象
//基本数据类型与对象的区别是:前者没有方法,后者可以像想处理对象一样处理
Integer a = 1 ;//这将会自动的装箱--->Integer a = new Integer(1);

//自动拆箱就是将基本数据从对象中自动的取出来
int b = a ;//自动拆箱 

/**
* 注意:
* 1.在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,
* 会存在内存中被重用,
* 2.如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用
* 3.当遇到算数运算的时候会自动的装箱和自动拆箱。
* 4.当发现有转型时会自动的装箱和自动的拆箱
*
*/


String的自动装箱和拆箱

	public static void testString(){
		String str1 = "hello" ;
		String str2 = "hello" ;
		String str3 = new String("hello") ;
		
		System.out.println(str1==str2);
		System.out.println(str1.equals(str2));
		System.out.println(str1==str3);
		System.out.println(str1.equals(str3));
	}

结果:

  1. true
  2. true
  3. false
  4. true

具体分析可以看String的内存分析,推荐一篇文章:

http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html

点击打开链接

String有一个特性是“共享” 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值