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

  • 相关阅读:
    linux-01-04(创建文件夹mkdir,进入目录命令cd,创建文件命令 echo cp vim touch等,批量创建文件操作)
    linux-05(tar命令的使用)
    linux-06(移动命令mv)
    linux-07(复制命令cp)
    linux-08(查看命令历史记录history)
    cookie
    vue-router路由懒加载
    setTimeout async promise执行顺序总结
    forEach陷阱
    函数节流与函数防抖之间的区别
  • 原文地址:https://www.cnblogs.com/Lillian-1304/p/boxing.html
Copyright © 2011-2022 走看看