zoukankan      html  css  js  c++  java
  • Java 基础

    总结

    1-valueOf()缓存使用到设计模式:享元模式

    单例模式和享元模式都是为了避免重复创建对象,但是其本质是不一样的:

    • 其实现方式不一样,单例是一个类只有一个唯一的实例,而享元可以有多个实例,只是通过一个共享容器来存储不同的对象。
    • 其使用场景不一样,
      • 单例是强调减少实例化提升性能,因此一般用于一些需要频繁创建和销毁实例化对象或创建和销毁实例化对象非常消耗资源的类中,如连接池、线程池。
      • 享元则是强调共享相同对象或对象属性,节约内存使用空间。

    2-详细解释

    规律:

    • 通过自动装箱Integer i = 1 / Character c = 'p'、或者显示调用valueOf() ,如果在缓存中,就返回同一个对象
    • 如果不在,就new一个新对象返回

    1.Integer.valueOf缓存范围是[-128,127]

    • 通过integer内部的private static class IntegerCache类的Integer cache[]来缓存
    • 缓存的最小值,不能改变,只能是-128
    • 缓存的最大值,可以通过-XX:AutoBoxCacheMax=<size>来改变。且只有大于127时,改变才有效;配置小于127无效

    2.Byte,Short,Long类型的缓存范围是[-128,127]

    • 每个包装类都有各自的缓存类ByteCache, ShortCache, LongCache
    • 缓存的上下限,不能改变

    3.Character缓存[0,127]

    • 缓存类是CharacterCache
    • 缓存的上下限,不能改变

    4.Double没有缓存,Double.valueOf()都是直接返回new Double (num);

    5. Boolean缓存TRUE、FALSE, 并没有缓存类。

  • 相关阅读:
    javascirpt Scoket
    黑马程序员面试题(一)交通灯管理系统
    中软国际实习总结
    黑马程序员Java基础正则表达式
    黑马程序员Java基础加强Java高新技术
    黑马程序员JAVA基础GUI
    面试题(二)银行业务调度系统
    黑马程序员JAVA基础IO流之File 类
    黑马程序员JAVA基础IO流其他类
    黑马程序员Java基础网络编程
  • 原文地址:https://www.cnblogs.com/frankcui/p/14320725.html
Copyright © 2011-2022 走看看