Java 值相同的String使用“==“关系运算符结果为false
原因:
在Java中,value值相同的两个使用new创建的字符串使用"=="关系运算符结果为false。
public static void main(String[] args) {
String s1 = new String("CSDN");
String s2 = new String("CSDN");
if(s1 == s2) {
System.out.println("true");
}
else {
System.out.println("false");
}
}
以上代码运行结果为false;
public static void main(String[] args) {
String s1 = "CSDN";
String s2 = "CSDN";
if(s1 == s2) {
System.out.println("true");
}
else {
System.out.println("false");
}
}
以上代码运行结果为true;
Java String 类 | 菜鸟教程 (runoob.com)
Java中用String直接创建的字符串存储在公共池中,而使用new方法创建的字符串存储在堆中。
解决:
使用String.equals()方法比较value值:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
public static void main(String[] args) {
String s1 = new String("CSDN");
String s2 = new String("CSDN");
if(s1.equals(s2)) {
System.out.println("true");
}
else {
System.out.println("false");
}
}
以上代码运行结果为true;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)