问题:
@Test
public void stringTest(){
String str1 = "hello";
String str2 = "hello";
System.out.println("str1.equals(str2) : "+ str1.equals(str2));
System.out.println("str1 == str2 : "+ (str1== str2));
}
//console
str1.equals(str2) : true
str1 == str2 : true
equals比较的是两个数的数值,而==比较的是地址的引用,但这里为什么str1==str2返回是true,主要是由于和java中的常量池有关;在给str1赋值的时候,将hello的一起放入了常量池中,当再次将hello赋值str2的时候,先从常量池中查看是否存在hello的值,如果有,则直接取出,所以str1和str2指的是同一个引用,因此返回的结果自然是true
本文详细解释了Java中字符串比较的方法,特别是使用equals方法与==运算符的区别。通过具体示例说明了两者在处理字符串时的不同行为,特别是涉及到字符串常量池的情况。

4455

被折叠的 条评论
为什么被折叠?



