zoukankan      html  css  js  c++  java
  • Java基础-Long简析

    • Long 是long类型的包装类型。
    • Long默认零值为null, long的默认零值为 0.
    • Long类中有个静态的内部缓存类,用来缓存 -128 ~ 127 之间的long包装对象实例,类加载的过程中会对LongCache的静态代码块进行初始化,后面自动装箱的 -128 ~ 127 之间的Long会直接返回缓存数组里面的对象引用。Long i = 125; 会直接指向静态常量池里面的值。
    //1. Long的内部类,当Class字节码文件被加载的时候,会执行静态代码块,对cache数组进行初始化。
    private static class LongCache {
            private LongCache(){}
            static final Long cache[] = new Long[-(-128) + 127 + 1];
            static {
                for(int i = 0; i < cache.length; i++)
                    cache[i] = new Long(i - 128);
            }
    }
    //2. 后面用Long.valueOf(Long l) 方法获取对应的Long对象的时候,或者直接用“=”给Long类型变量赋值的话,如果缓存数组有,则直接返回缓存数据里的对象引用。
    public static Long valueOf(long l) {
    final int offset = 128;
    if (l >= -128 && l <= 127) { // will cache
    return LongCache.cache[(int)l + offset];
    }
    return new Long(l);
    }

    //3. 注:如果用 new Long(x) 创建出来的对象始终在堆内存中。

    //4. 该特性,int的包装类型Integer类似。
    • Effective java中建议,在循环中不要使用包装类型,会进行频繁的装箱和拆箱动作,严重影响性能。
    • 注意,long 赋值的时候,需要给数字后面带“l”;

    (复习笔记整理,若有出入后续修缮)

  • 相关阅读:
    mybatis 使用动态SQL
    mybatis 使用resultMap实现关联数据的查询(association 和collection )
    mybatis中的resultMap
    struts2 + ajax + json的结合使用,实例讲解
    destroy-method="close"的作用
    ajax
    Iterator<转>
    实现ajax
    struts返回json
    orm 相关
  • 原文地址:https://www.cnblogs.com/qq-361807535/p/12598264.html
Copyright © 2011-2022 走看看