omg*_*omg 44 java string equals
字符串部分是String [6]:
["231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"]
但是当我比较parts[0]
时"231"
:
"231" == parts[0]
Run Code Online (Sandbox Code Playgroud)
以上结果是假的,
我很困惑,所以有人能告诉我为什么吗?
coo*_*ird 77
该==
运营商比较对象引用,在不值String
秒.
要比较String
s 的值,请使用以下String.equals
方法:
"231".equals(parts[0]);
Run Code Online (Sandbox Code Playgroud)
对于Java中的任何其他对象都是如此 - 在比较值时,始终使用equals
方法而不是使用==
运算符.
该equals
方法是一部分Object
,并且应该被将以某种方式进行比较的类所覆盖.
Yis*_*hai 15
如果字符串未被实现,则==检查引用标识.使用:
"231".equals(parts[0]);
Run Code Online (Sandbox Code Playgroud)
代替.
Dav*_*one 13
==
在Java中比较对象的地址(在本例中为字符串).
你想要的是什么 parts[0].equals("231")
Jes*_*sse 10
以下打印出"真实";
String s = "231";
if(s == "231")
{
System.out.println("true");
}
else
{
System.out.println("false");
}
Run Code Online (Sandbox Code Playgroud)
这是因为字符串不可变,java会尝试尽可能多地节省空间,因此它指向同一个内存引用.
但是,以下打印出"false":
String s = new String("231");
if(s == "231")
{
System.out.println("true");
}
else
{
System.out.println("false");
}
Run Code Online (Sandbox Code Playgroud)
new
将强制它将字符串存储在新的内存位置.
顺便说一句,你应该总是.equals()
用来比较字符串(对于像这样的情况)
"=="比较对象引用,在您的情况下,"231"是与部分[0]不同的对象.
您想使用String.equals.
parts[0].equals("231")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79001 次 |
最近记录: |