0

我的问题隐藏在下一个代码中:

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.

我检查了字符编码是否有问题,但不是,无论如何它都是正确的。没有类型不匹配。

这其中的逻辑在哪里?

4

2 回答 2

0

使用 .equals not == 您通过引用而不是值进行比较

于 2015-03-29T21:57:31.703 回答
0

如果要比较2个字符串的值,则需要使用.equals()

所以你会这样做:

if(d.equals("0"){
 // your code here
}

Using==通过引用(内存中的同一点)比较字符串,其中.equals()比较字符串的值。

于 2015-03-29T21:57:46.873 回答