zoukankan      html  css  js  c++  java
  • 为什么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以及==的用法(简单介绍)

  • 相关阅读:
    sitemesh包装工具
    关于对XML的处理
    关于打开tomcat的远程调试功能
    hdu4531 乾坤大挪移
    hdu4521 小明序列 (线段树 + DP)
    hdu4527 && hdu4528
    zoj3691 Flower
    pku2817 WordStack
    zoj3652 Maze
    zoj3381 Osaisen Choudai!
  • 原文地址:https://www.cnblogs.com/congcongdi/p/13632272.html
Copyright © 2011-2022 走看看