Java 中装箱拆箱的一个细节

 
package AdvanceJava;

public class Box {
	
	public static void main(String args[])
	{
		Integer a = 127;
		Integer b = 127;
		System.out.println(a==b);
		Integer c = 128;
		Integer d = 128;
		System.out.println(c==d);
		
		/*
		 * 如果  integer 封闭的对象 的大小 
		 * 是在一个 字节内的话,即 -128 - 127
		 * 就把包装的对象放在常量池中,
		 * 便如果包装的对象大于一个字节 的话
		 * 那么就把其放在堆中
		 * 这了就是上面的
		 * 		a == b
		 * 		c != d;
		 * 				
		 *  这了是一种享元模式
		 */
	}
}

package AdvanceJava; import static java.lang.System.*; public class Box {    public static void main(String args[])  {   Integer a = 1;   Integer b = 2;      Integer c = 3;   Integer d = 3;   Integer e = 321;   Integer f = 321;   Long g = 3L;   out.println(c == d);   out.println(e == f);   out.println(c == (a+b));   out.println(c.equals(a+b));   out.println(g == (a+b));   out.println(g.equals(a+b));      out.println("--------");      /*    * 如果  integer 封闭的对象 的大小    * 是在一个 字节内的话,即 -128 - 127    * 就把包装的对象放在常量池中,    * 便如果包装的对象大于一个字节 的话    * 那么就把其放在堆中    * 这了就是上面的    *   a == b    *   c != d;    *         *  这了是一种享元模式    */  } }

package AdvanceJava; import static java.lang.System.*; public class Box {    public static void main(String args[])  {   Integer a = 1;   Integer b = 2;      Integer c = 3;   Integer d = 3;   Integer e = 321;   Integer f = 321;   Long g = 3L;   out.println(c == d);   out.println(e == f);   out.println(c == (a+b));   out.println(c.equals(a+b));   out.println(g == (a+b));   out.println(g.equals(a+b));      out.println("--------");      /*    * 如果  integer 封闭的对象 的大小    * 是在一个 字节内的话,即 -128 - 127    * 就把包装的对象放在常量池中,    * 便如果包装的对象大于一个字节 的话    * 那么就把其放在堆中    * 这了就是上面的    *   a == b    *   c != d;    *         *  这了是一种享元模式    */  } } /* 反编译后的代码  *   Integer a = Integer.valueOf(1);     Integer b = Integer.valueOf(2);

    Integer c = Integer.valueOf(3);     Integer d = Integer.valueOf(3);     Integer e = Integer.valueOf(321);     Integer f = Integer.valueOf(321);     Long g = Long.valueOf(3L);     System.out.println(c == d);     System.out.println(e == f);     System.out.println(c.intValue() == a.intValue() + b.intValue());     System.out.println(c.equals(Integer.valueOf(a.intValue() + b.intValue())));     System.out.println(g.longValue() == a.intValue() + b.intValue());     System.out.println(g.equals(Integer.valueOf(a.intValue() + b.intValue())));  * */

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值