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对象了。因此输出的结果是不同。

  • 相关阅读:
    shell 冒泡算法 解决数组排序问题
    react(二)
    react(一)
    mybatis-plus:3
    lambda
    配置中心(nacos)-控制台使用
    nacos作为配置中心的简单项目配置
    nacos作为注册中心的简单项目配置
    Vue初步学习
    nacos单例模式简单搭建
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2945346.html
Copyright © 2011-2022 走看看