实验代码
package ketang;
public class StringEquals {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String s1=new String("Hello");
String s2=new String("Hello");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
String s3="Hello";
String s4="Hello";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
}
实验截图
总结
可以看到在第一个比较s1,s2时是false,第二个用equal()进行比较后是true,而s3,s4比较时,不管是直接比较还是用equal比较都是true。我们可以发现s1,s2是用new String来创建的,而s3,s4是是直接String=“字符串”来创建的。string其实是个类,用new时开辟了新空间,s1,s2对象比较时,两个内存位置不同,所以是false,而s3,s4比较时,s3,s4是用的同一个地方的“hello”故比较时是true。用equal时,只是比较其中的内容,故都是true。