Java 如果(x==“0”问题

Java 如果(x==“0”问题,java,android-studio,if-statement,Java,Android Studio,If Statement,我有一个字符串变量,其中的值通常为“0”,也通常不是“0” 每当我更新这个值时,都需要对它进行解析。 我知道这个字符串,当它为零时,它不能被解析 然而,我不明白为什么比较两个字符串的if语句不起作用,它背后一定有一些我不明白的逻辑,如果有人能解释我遗漏了什么,我将不胜感激 我已经通过使用.equals(“0”)解决了这个问题,但我不知道为什么这个方法有效,而另一个方法无效。先谢谢你 if(x==“0”){ 整数=0; }否则{ 整数=整数.parseInt(x); } 比较字符串时需要使用.eq

我有一个字符串变量,其中的值通常为“0”,也通常不是“0”

每当我更新这个值时,都需要对它进行解析。 我知道这个字符串,当它为零时,它不能被解析

然而,我不明白为什么比较两个字符串的if语句不起作用,它背后一定有一些我不明白的逻辑,如果有人能解释我遗漏了什么,我将不胜感激

我已经通过使用
.equals(“0”)
解决了这个问题,但我不知道为什么这个方法有效,而另一个方法无效。先谢谢你

if(x==“0”){
整数=0;
}否则{
整数=整数.parseInt(x);
}
比较字符串时需要使用.equals()

x.equals("0") 
要避免x为null时出现问题,可以执行以下操作:

"0".equals(x) // or Objects.equals(x, "0") as suggested by @knittl
这将正常工作:

// x == "0" is reference comparison
// this is value comparison
if (x.equals("0")) {
  integer = 0;
} else {
  integer = Integer.parseInt(x);
}
我已经通过使用.equals(“0”)解决了这个问题,但我不知道为什么这个方法有效,而另一个方法无效


=
在Java compares引用中(类似于C中的“指针”),
String.equals()
是一个重写的方法,用于比较内容。

现在的方法是引用比较,但您需要值比较。@splaten Java!=JavaScriptBecause“==”比较的是字符串值,而不是字符串值。您可以在此处阅读更多内容:为了避免x为null的问题,请将其设置为
“0”。等于(x)
对象。等于(x,“0”)
我认为数字前面的“0”是默认值是对的?如果.equals由于X为null而无法返回值,它将返回“0”@adjawsdaw No,“0”是字符串对象。我们调用成员函数.equals将其与x中的值进行比较。如果值匹配,则.equals返回true;如果它们不匹配,则.equals返回false。我希望这是有道理的。请让我知道我是否可以进一步澄清这一点。那么在什么情况下我需要使用“==”运算符?