我的问题隐藏在下一个代码中:
public class saturo {
public String primer, d;
public void start() {
primer = "545640";
//d = "0";
d = String.valueOf(primer.charAt(((primer.length())-1)));
if(d == "0"){
System.out.println("This is equal: d == " + d);
}else{
System.out.println("This is not equal: d == " + d);
}
}
public static void main(String args[]) {
new saturo().start();
}
}
如您所见,问题是如果我将 String d 声明为“0”,那么程序将在 d 等于“0”时执行它并返回true
;
但是,如果我从字符串中获取字符“0”,将其转换为字符串,并检查这是否等于“0”,那么我有一个false
.
我检查了字符编码是否有问题,但不是,无论如何它都是正确的。没有类型不匹配。
这其中的逻辑在哪里?