Java 如果(x==“0”问题
我有一个字符串变量,其中的值通常为“0”,也通常不是“0” 每当我更新这个值时,都需要对它进行解析。 我知道这个字符串,当它为零时,它不能被解析 然而,我不明白为什么比较两个字符串的if语句不起作用,它背后一定有一些我不明白的逻辑,如果有人能解释我遗漏了什么,我将不胜感激 我已经通过使用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
.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。我希望这是有道理的。请让我知道我是否可以进一步澄清这一点。那么在什么情况下我需要使用“==”运算符?