为什么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);
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=100和Integer 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、

代码示例: 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=100和Integer c=1000,d=1000时会跳转到下面的代码中:   可以发现当-128
经验分享 程序员 微信小程序 职场和发展