Java 为什么==适用于整数而不适用于字符串?
我知道这一点: 当您使用==比较两个对象时,它将比较该对象的两个实例,并检查它们是否相等。 使用.equals()时,它将比较两个对象的状态 假设这是我的代码:Java 为什么==适用于整数而不适用于字符串?,java,object,equals,instances,Java,Object,Equals,Instances,我知道这一点: 当您使用==比较两个对象时,它将比较该对象的两个实例,并检查它们是否相等。 使用.equals()时,它将比较两个对象的状态 假设这是我的代码: 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);
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");
为什么这段代码只打印“整数相等”
=
比较引用,因为字符串是引用类型,int
是值类型。这是因为在Java中字符串是对象,对象只有在引用相等时才会相等。(它们是相同的对象)因为对象的值是保存对象值的内存位置,而基元类型的值是其值本身。例如,如果你在String类型的对象上使用==,你是在比较它们的内存位置。对于String,你必须使用equals()
而不是=
,因为它是一个对象。银河系的每个人,停止询问此问题。请尝试使用大于127的整数…==运算符检查对象引用(对于字符串、整数等对象),但对于原语,它会检查其值。使用equals
检查对象值是否相等。@marounnaroun并停止反复回答@哇,真是一针见血。如果您尝试使用大于127的整数,则更有可能遇到与其他引用变量相同的问题,因为对象不太可能是==
。整数是对象而不是原语。因为Java是一种糟糕的语言,无法实现最有用的语法sugar-FTFY;)