Java字符串相等陷阱

前两天在android开发中判断两个字符串相等的时候犯了个小错误,就是在判断两个相同字符串的变量的时候用的是==,但是结果一直返回的是false,折腾了好久,一百度才知道在Java中判断字符串内容相等需要用equals函数。
搜了搜其他的资料,做了一些总结拓展,内容如下:

内容判断和地址判断

在Java中字符串的判断分为内容判断和地址判断

  1. 内容判断
    其实百分之九十九需要的都是内容上的判断相等与否,而且绝大部分错误也是在这~
    内容上在用equals函数,即 s1.equals(s2)
  2. 地址判断
    地址判断指的是比较这两个字符串是否具有相同的地址;
    一般来说,有相同的地址 内容上就肯定相同,
    反之,内容上相同地址上不一定相同,这得具体看定义的是不是同一个对象

    实例

1
2
3
4
5
6
7
8
9
10
11
12
13
public class HelloWorld {
public static void main(String[] args) {
String a = "123";
String b = "123";
boolean c = (a == b);
System.out.println(c);

String d = new String("123");
String e = new String("123");
boolean f = (d == e);
System.out.println(f);
}
}

运行得到的结果是:
true
false