Java 字符未正确识别

Java character not recognized correctly

我不明白为什么会出现下面的代码:

public Image getLetter(String letterToGet)
{
    System.out.println("é" == "e");

    System.out.println("Received: " + letterToGet);

    if("\u00e9" == letterToGet.toLowerCase()); {
        letterToGet = "SPECIALACCTAIGUESPECIAL";
    }
    if("\u00e8" == letterToGet.toLowerCase()) {
        letterToGet = "SPECIALACCTGRAVESPECIAL";
    }

    System.out.println("searching for " + letterToGet + " in the hashmap");
    return languageMap.get(letterToGet.toLowerCase());
}

可以return下面的输出

Traduction following ArrayList: [e, é, è]
Received: e
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: é
searching for SPECIALACCTAIGUESPECIAL in the hashmap
Received: è
searching for SPECIALACCTAIGUESPECIAL in the hashmap

按照这个逻辑,为什么这行 return 是错误的?

System.out.println("\u00e9" == "e");

记住 e!=é 和 u00e9=é,这将 return 为真 :

System.out.println("\u00e9" == ("é"));//Notice é instead of e

请注意,即使这在那种情况下可行,因为我们比较字符文字(如@Pshemo 在评论中解释的那样),请确保将较长的字符串与 .equals.

进行比较

意外输出的原因是第一个 if 之后的额外分号。

目前,您有

if("\u00e9" == letterToGet.toLowerCase()); {
    letterToGet = "SPECIALACCTAIGUESPECIAL";
}

其中对letterToGet的赋值超出了if的范围,因此无论letterToGet的值如何,它都会运行。