前言
字符串的比较是一个常见的面试题,这里总结一下常见的关于String的一些题目。
先明确一个概念:
基本数据类型之间的 == 是比较值,引用数据类型 == 比较的是地址值,equals方法比较的是值不是地址
示例一:
public static void main(String[] args) {
String s2="abc";
String s3="abc";
System.out.println(s2==s3);
}
运行结果:
true
分析:使用 “” 创建的字符串会直接存储在常量池中,先检查常量池中有没有“abc"字符串,若没有则添加到常量池中去,并且直接指向它。所以变量s2指向的地址是常量池中的”abc"。同理,s3也指向了常量池中的同一个地址“abc"。由于s2和s3指向的是同一个地址,而”==“比较的是内存地址,所以返回true.
示例二:
public static void main(String[] args) {
String s1="ab", s2="a"+"b", s3="a"