下面程序结果为:( )
public class Tester {
public static void main(String[] args) {
int x = 5;
Integer x1 = x;
Integer x2 = x;
int x3 = new Integer(5);
System.out.print(x1.equals(x));
System.out.print(x1 == x);
System.out.print(x2.equals(x1));
System.out.print(x2 == x1);
System.out.print(x2 == x3);
System.out.print(x2.equals(x3));
}
}编译失败
falsefalsetruetruetruetrue
truetruetruetruetruetrue
falsefalsetruetruetruefalse
truefalsetruefalsefalsetrue
运行时异常被抛出
equals是值比较, ==是引用地址比较, 当引用指向同一个对象,引用的值是相同的。
Java中基本数据类型都涉及常量池问题,编译器能算出来的数值基本都在常量池中,且引用对象的值相同,则引用也指向同一对象。
Java中基本数据类型都涉及常量池问题,编译器能算出来的数值基本都在常量池中,且引用对象的值相同,则引用也指向同一对象。