在String中,两个String用==作比较,比较的是字符串的地址,equals比较的是字符串的值。
我们用代码来测试
两个字符串都用new的方式来创建。结果:
从结果可以看出,==比较的是地址,用new关键字创建的两个值同为"abc"的字符串,==返回false,equals()返回true。
但是字符串复制有特殊的字符串常量池操作,如下图:
结果为:
这次测试可以看出,当直接用赋值=给字符串初始化时,如果字符串的值相等,不会在内存中开辟新的地址,而是从String常量池中取出abc。