• 为什么Java中1000==1000为false而100==100为true?


    代码示例:

           Integer a=100,b=100;
           Integer c=1000,d=1000;
           System.out.println(a==b);
           System.out.println(c==d);
    
           int e=100,f=100;
           int g=1000,h=1000;
           System.out.println(e==f);
           System.out.println(g==h);

    输出结果:

    输出结果

    1、a和b,c和d的输出结果不等的原因:

      代码debug调试会发现执行Integer a=100,b=100Integer c=1000,d=1000时会跳转到下面的代码中:

      

      可以发现当-128<i<127时,返回同一个对象,地址相同,故而返回结果时true;而不在这个范围的时候,就执行的是new Integer(i),是两个不同的引用对象,就是执行的是

      Integer c = new Integer(1000); 
      Integer d = new Integer(1000);
    Java中obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。言外之意就是要求两个变量所指内存地址相等的时候,才能返回true,每个对象都有自己的一块内存,
    因此必须指向同一个对象才返回ture。

    2、后面两个int类型均返回true,是因为int是基本的数据类型,"=="比较的其实就是值是否相等。

    3、java中equals以及==的用法(简单介绍)

  • 相关阅读:
    前端性能优化
    CSS实现文字在容器中对齐方式
    spring里面的context:component-scan
    Builder模式
    idea无法新建maven项目
    Java-位运算
    pg数据库数据表异常挂起
    Java-多线程与单例
    Java-数据结构之二叉树练习
    Java-JNA使用心得
  • 原文地址:https://www.cnblogs.com/congcongdi/p/13632272.html
Copyright © 2020-2023  润新知