问题:
@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