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也是如此

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

  • 相关阅读:
    as3 return语句中的运算符
    AIR custom ApplicationUpdaterUI
    Flash Builder 无法连接到应用程序以访存概要分析数据
    Android的所有权限说明
    Tomcat数据源配置
    hibernate 延迟加载(懒加载)
    Android SQLite数据库操作
    Android下载文本文件和mp3文件
    JPA注解
    Android Intent传值且实现窗体跳转
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3277977.html
Copyright © 2011-2022 走看看