为什么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以及==的用法(简单介绍)

原文地址:https://www.cnblogs.com/congcongdi/p/13632272.html