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

来源:百度知道 编辑:UC知道 时间:2024/06/19 07:20:38
java中可以用“==”来比较两个字符串是否相等吗?还是说只能用“equals”来比较

另外要比较两个char型的字符是否相等,是用“==”还是“equals”,还是两种方法都可以用

不可以。

==比较字符串是否引用同一地址,如果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,但是用==比较不相同。

先说结论,不能。


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

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

通过上面的例子可以看到,虽然两个字符串的值都是"abc&qu