场景
网上流传这样一个例子
public static void main(String[] args) {
// write your code here
int int1 = 12;
int int2 = 12;
Integer integer1 = new Integer(12);
Integer integer2 = new Integer(12);
Integer integer3 = new Integer(127);
Integer a1 = 127;
Integer a2 = 127;
Integer a = 128;
Integer b = 128;
System.out.println("int1 == int2 -> " + (int1 == int2));
System.out.println("int1 == integer1 -> " + (int1 == integer1));
System.out.println("integer1 == integer2 -> " + (integer1 == integer2));
System.out.println("integer3 == a1 -> " + (integer3 == a1));
System.out.println("a1 == a2 -> " + (a1 == a2));
System.out.println("a == b -> " + (a == b));
}
输出结果是:
int1 == int2 -> true
int1 == integer1 -> true
integer1 == integer2 -> false
integer3 == a1 -> false
a1 == a2 -> true
a == b -> false
总结
-
==
用于基本数值类型的值之间,可以作相等判断。 -
==
对于引用数值类型实例之间,则是用于比较引用的。 -
Integer num = 127;
这类没有使用new关键字 且 数值在-128 ~ +127之间,num指向Integer缓存。详情见 Integer.java::IntegerCache源码 和 JVM参数【-XX:AutoBoxCacheMax 】 - Integer和int相比较,无论谁在前,Integer会拆箱成int再进行比较
网友评论