为什么==处理整数但不处理字符串?

时间:2014-03-09 11:36:08

标签: java object equals instances

我知道这个: 当您使用==比较两个对象时,它将比较对象的两个实例并检查它们是否相等。 当您使用.equals()时,它将比较2个对象的状态。

我们说这是我的代码:

String string1 = new String("abc");
String string2 = new String("abc");
Integer integer1 = new Integer(5);
Integer integer2 = new Integer(5);
int int1 = new Integer(6);
int int2 = new Integer(6);

if (string1 == string2)
    System.out.println("The strings are equal");
if (integer1 == integer2)
    System.out.println("The integers are equal");
if (int1 == int2)
    System.out.println("The ints are equal");

为什么这段代码只打印“整体是平等的”?

4 个答案:

答案 0 :(得分:1)

因为对象的值是保存对象值的内存位置,而基本类型的值是其值本身。例如,如果您在String类型的对象上使用==,那么您将比较它们的内存位置。

答案 1 :(得分:0)

==比较引用,因为string是引用类型,而int是值类型。

答案 2 :(得分:0)

那是因为在Java字符串中是对象,而对象只有在它们的引用时才是相同的。 (它们是同一个对象)

答案 3 :(得分:0)

对于字符串,您必须使用equals()而不是==,因为它是一个对象。