//int和Integer == 判断 内存 地址 引用
public static void main(String args[]) {
int a1 =127;
Integer a2 =127;
Integer a3 =127;
Integer a4 =new Integer(127);
System.out.println(a1==a2);//true
System.out.println(a1==a4);//true
System.out.println(a2==a3);//true
System.out.println(a2==a4);//false
//int 类型的自动封装,与Integer声明的变量 总是指向同一地址
//Integer声明的变量的值 在[-128,127]范围 地址指向相同(byte范围的数 是从常量池中获取,)
//new Integer()是新建一个对象,与其他Integer的引用不同
int a5 =1280;
int a6 =1280;
Integer a7 =1280;
Integer a8 =1280;
System.out.println(a5==a6);//true
System.out.println(a5==a7);//true
System.out.println(a7==a8);//false
}
结论 int和任意Integer都是同一地址 ; |
== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- == 和 === 比较(js中) 不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等 (== 会先把类型转换一直后比较值) ===如果类型不同,其结果就是不等(=== 会同时比较 值 和 类型) |
equals:equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。 |