zoukankan      html  css  js  c++  java
  • 装箱拆箱与享元模式

    装箱和拆箱:

    装箱是将值类型转换为引用类型,反之,将引用类型转换为值类型称为拆箱。java JDK 1.5 提供了基本数据类型的自动装箱和拆箱 auto Boxing/unBoxing

    public class AutoBox {
    public static void main(String[] args)
    {
     Integer iObject = 3;//Auto Boxing
     System.out.println(iObject + 12);// unboxing
     
     Integer a = 3;
     Integer b = 3;
     System.out.println(a==b);//true
     
     Integer a1 = 138;
     Integer b1 = 138;
     System.out.println(a1 == b1);//false
     }
    }

    享元模式 flyweight:蝇量级的选手;轻量级职业拳击手。享元模式是对象的模式,以共享的方式支持大量的细粒度对象。 当一些小的对象有很多相同属性时,我们把这些对象用一个对象来表示,相同的属性叫做内部状态;但是它们还是有一些差别的,这些差别作为外部参数传递进去,用对象中的方法来实现,这些不同点称为外部状态。

    对于Integer,当整数大小在一个字节可以表示的范围之内时,会做一个自动缓存,这时候就用到了享元模式,两个integer变量实际上是一个对象,指向同一个内存地址。但是当整数大小大于一个字节的表示范围时,就不再采用这种方式。

    java 中的String类型也是采用了享元模式,String 对象是final 类型,对象一旦创建就不可改变。java中的所有字符串常量都存放在常量池中,java会确保一个字符串常量在常量池中只有一个拷贝。

    因此,以下代码中输出结果为 true

    String s1 = "abc";
    String s2 = "abc";
    System.out.println(s1 == s2);
    

    关于更详细的例子参考 http://www.cnblogs.com/java-my-life/archive/2012/04/26/2468499.html

  • 相关阅读:
    SoapUI 使用笔记
    git 使用笔记(二)
    git 使用笔记(一)
    jquery 拓展
    hdu 1024 Max Sum Plus Plus (DP)
    hdu 2602 Bone Collector (01背包)
    hdu 1688 Sightseeing (最短路径)
    hdu 3191 How Many Paths Are There (次短路径数)
    hdu 2722 Here We Go(relians) Again (最短路径)
    hdu 1596 find the safest road (最短路径)
  • 原文地址:https://www.cnblogs.com/Lillian-1304/p/boxing.html
Copyright © 2011-2022 走看看