代码示例:
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是基本的数据类型,"=="比较的其实就是值是否相等。