zoukankan      html  css  js  c++  java
  • (面试题)有关Integer

    今天在一家公司做了个面试题:运行下列代码,输出结果是什么

      Integer a=new Integer("12");
      Integer b=new Integer("12");
      
      if (a.equals(b))
      {
       System.out.println(true);
      }
      else
      {
       System.out.println(false);
      }
      
      if (a==b)
      {
       System.out.println(true);
      }
      else
      {
       System.out.println(false);
      }

    很显然,结果为:

    true
    false

    本人反而搞错了,只怪于对于Integer对象和Integer.valueOf方法记混淆了,虽然通过了面试,但这个错误令人汗颜呀!!!

    在此介绍一下Integer Long对象的valueOf方法

    ------------------------------------------------------------------------------------

    Integer.valueOf 缓存了-128到127的Integer对象

    测试代码:
             boolean b1 =  Integer.valueOf(127)==Integer.valueOf(127); // true
             boolean b2 = Integer.valueOf(128)==Integer.valueOf(128) ; // false

             boolean b3 =  Integer.valueOf(-128)==Integer.valueOf(-128); // true
             boolean b4 = Integer.valueOf(-129)==Integer.valueOf(-129) ; // false

    Integer.valueOf()的源代码及注释:
    注释部分:
    If a new Integer instance is not required, this method should generally be used in preference to the constructor Integer(int), as this method is likely to yield significantly better space and time performance by caching frequently requested values.
    注释结束。
    public static Integer valueOf(int i) {
        final int offset = 128;
        if (i >= -128 && i <= 127) { // must cache
            return IntegerCache.cache[i + offset];
        }
            return new Integer(i);
    }

    由上面可见,valueOf会将常用的值(-128 to 127)cache起来。当i值在这个范围时,会比用构造方法Integer(int)效率和空间上更好。
    因此,对小数据intInteger封装,尽量的使用Integer.valueOf()创建,而不要使用new来创建。因为Integer类缓存了从-128256个 状态的Integer,减少了重复对象的创建。
    Long也是如此

    小结:对于比较偏的知识点,要记的就一定要记牢!

  • 相关阅读:
    nginx 出现413 Request Entity Too Large问题的解决方法
    PHP中的插件机制原理和实例
    PHP扩展开发:第一个扩展
    阿拉伯语在网页中排版问题解决
    Piwik学习 -- 插件开发
    piwik高负载加速之切换session存储位置
    php 函数func_get_args()、func_get_arg()与func_num_args()之间的比较
    Docker: 基础介绍 [一]
    深入剖析Kubernetes学习笔记:开篇词(00)
    网络编程基础【林老师版】:简单的 套接字通信(一)
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3277977.html
Copyright © 2011-2022 走看看