在 Java 中,比较字符串不能使用 == 来比较内容,== 比较的是“引用(内存地址)”。
字符串内容比较应使用 equals() 或 equalsIgnoreCase()。
equals() 比较内容String a = "hello";
String b = "hello";
if (a.equals(b)) {
System.out.println("相等");
}
String a = "Hello";
String b = "hello";
if (a.equalsIgnoreCase(b)) {
System.out.println("相等(忽略大小写)");
}
== 比较字符串if (a == b) {
// 可能“碰巧”成立,但不安全
}
原因:
== 比较的是 对象引用true示例:
String a = "abc";
String b = new String("abc");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
if ("hello".equals(a)) {
// 即使 a 为 null 也不会抛异常
}
Objects.equalsimport java.util.Objects;
if (Objects.equals(a, b)) {
// 自动处理 null
}
switch (a) {
case "hello":
System.out.println("hello");
break;
case "world":
System.out.println("world");
break;
}
| 场景 | 推荐方式 |
|---|---|
| 比较内容 | equals() |
| 忽略大小写 | equalsIgnoreCase() |
| 防止空指针 | "常量".equals(变量) |
| 引用比较 | ==(极少用) |
如果你有具体代码场景(比如 if 里多个条件、null 判断等),可以直接发出来。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。