结论:
==在java中是比较引用的,即在内存中的地址。而String的equals()是比较字符串的内容。
示例一:
String s1 = "String";
String s2 = "String";
System.out.println(s1 == s2 );
System.out.println(s1.equals(s2));
结果:
true //"String"存储在常量池中,常量池中所有相同的字符串常量被合并,只占用一个空间。;
true
实例二:
String s3 = new String("String");
String s4 = new String("String");
System.out.println(s3 == s4);
System.out.println(s3.equals(s4));
结果:
false //说明s3和s4不是指向不同地址。
true
String的equals()的工作原理:
1、首先比较引用,如果引用相同,返回true;
2、比较类型,如果不是比较的不是String对象,返回false;
3、比较长度,字符串长度不等时,返回false;
4、逐个字符比较两个字符串,遇到不一样的字符,返回false;
5、到最后都一致,返回true;