java中可以用==来比较两个字符串是否相等吗

2024-11-07 13:50:03
有5个网友回答
网友(1):

不可以。

==比较字符串是否引用同一地址,如果2个字符串是同一个对象,那可以用==,如果不是同一个对象,只是比较内容是否一致,则不可以用==。

比如:

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // true,因为s1和s2是同一个字符串常量abc的引用,是同一个对象地址,所以相同

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);  // false,因为s1和s2是两个不同的对象,虽然字符串值都是abc,但是用==比较不相同。

网友(2):

先说结论,不能。


两个对象进行比较,如果使用==符号,那么比较的是这两个对象的“引用”(类似C语言中指针的概念)。字符串比较,通常情况下比较的是字符串的值而非引用,不同的“引用”是可以对应相同值的,如果这时候用==比较,得出的结论是不相等,但是实际上它们的值是相等的。举例说明:

String a = new String("abc");
String b = new String("abc");
a == b; //false
a.equals(b) // true

通过上面的例子可以看到,虽然两个字符串的值都是"abc",但是用==比较时,它们是不相等的,如果需要比较它们的值,应该使用equals()方法。


如果事情只是像这样的话,那么就简单了……可是还有个东西叫做“字符串常量池”,常量池的机制,会使得在某些情况下,==也能得出正确的结论,就不展开讲了,你只需要记得一点:对象比较的时候,==比较的是引用(指针),要比较对象的值,应当使用equals()方法。


参考:

《Java编程思想 第4版》机械工业出版社 P44-45

网友(3):

char 是可以用"=="的,这个实验,你可以自己用System.out.print()方法打印一下看看char 对应的数值;

但是字符串的话,在Java 当中,只能用equals()方法进行比较,java不是C#

路过~希望可以帮助你~

网友(4):

char只能用==
equals是Object的方法
字符串比较相等一般用equals,不要用==。

网友(5):

字符串1.equals(字符串2)
我一般不用==
equals前面放变量 后面放常量