关于java String的“==”和equals()比较、引用的小问题

结论:

==在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;

猜你喜欢

转载自blog.csdn.net/chpllp/article/details/107538563