zoukankan      html  css  js  c++  java
  • 《疯狂Java讲义精粹》读书笔记5 一个奇怪的问题

    ------------《疯狂Java讲义精粹》读书笔记5--------------

    先猜一猜下面的代码会输出什么吧:

     1 /**
     2  * 一个奇怪的问题
     3  * @author 《疯狂的Java讲义》
     4  * @date 3/6/2013
     5  */
     6 public class AStrangeJavaAnswer {
     7     public static void main(String[] args) {
     8         Integer inA = 5;
     9         Integer inB = 5;
    10         System.out.println("inA == inB: " + (inA==inB));
    11         
    12         Integer inC = 128;
    13         Integer inD = 128;
    14         System.out.println("inC == inD: " + (inC==inD));
    15     }
    16 }

    输出结果:

    inA == inB: true
    inC == inD: false


        什么!没搞错吧~~~ 怎么不是输出两个true? 时尚这与Java的Integer类的设计有关,查看java.lang.Integer类的源代码:

      系统把-128~127之间的数自动装箱成Integer实例,并放入一个cache的数组之中。如果把一个-128~127之间的数自动装箱成Integer实例时实际上直接指向对应的数组元素,因此,这个范围之外的数就要重新创建一个Integer对象了。因此输出的结果是不同。

  • 相关阅读:
    第009讲:了不起的分支和循环3
    Term_Application
    十大编程算法助程序员走上高手之路
    每天工作4小时的程序员
    编程真相_节选
    Sublime_Snippet
    VIM资源管理
    微信企业号开发资源整理
    vitruviano
    VIM_git
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2945346.html
Copyright © 2011-2022 走看看