转换后的 charAt() 不等于相同的字符串
Converted charAt() doesnt equals to the same String
我的问题隐藏在下一个代码中:
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();
}
}
如您所见,问题是如果我将字符串 d 声明为“0”,那么程序将执行它,因为 d 等于“0”并且 return true
;
但是,如果我从字符串中获取字符“0”,将其转换为字符串,并检查它是否等于“0”,那么我得到了一个 false
。
我检查过字符编码是否有问题,但没有,无论如何都是正确的。没有类型不匹配。
这是什么逻辑?
使用 .equals not == 你是通过引用比较而不是值
如果要比较2个字符串的值,需要使用.equals()
所以你会这样做:
if(d.equals("0"){
// your code here
}
使用 ==
通过引用比较字符串(内存中的相同位置),其中 .equals()
比较字符串的值。
我的问题隐藏在下一个代码中:
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();
}
}
如您所见,问题是如果我将字符串 d 声明为“0”,那么程序将执行它,因为 d 等于“0”并且 return true
;
但是,如果我从字符串中获取字符“0”,将其转换为字符串,并检查它是否等于“0”,那么我得到了一个 false
。
我检查过字符编码是否有问题,但没有,无论如何都是正确的。没有类型不匹配。
这是什么逻辑?
使用 .equals not == 你是通过引用比较而不是值
如果要比较2个字符串的值,需要使用.equals()
所以你会这样做:
if(d.equals("0"){
// your code here
}
使用 ==
通过引用比较字符串(内存中的相同位置),其中 .equals()
比较字符串的值。