如果满足要求,语句似乎会跳过

时间:2013-08-06 09:41:34

标签: java string if-statement equals

我有一个非常简单的问题,我真的无法理解。

我有一个方法,它接受一个字符串并确定字符串的第一个字符是什么,然后返回它。

public String deterFirstChar(String value){
    String keyValue;
    char res; 
    res = value.charAt(0);
    keyValue = Character.toString(res);
    if (keyValue == "C"){
        return keyValue;
    } else if (keyValue == "G") {
        return keyValue;
    }
    System.out.println("Error: Wrong keyParam");
    return "F";
}

但是,如果没有返回,例如keyValue = C,它会跳过if语句并在我确定keyValue为“C”时返回“F”。

为什么会这样?

3 个答案:

答案 0 :(得分:7)

首先,检查How do i compare string?

其次,您不必将char转换为String来检查其值,您可以像下面这样做

res = value.charAt(0);
//keyValue = Character.toString(res); NOT REQUIRED
if (res == 'C'){
    return Character.toString(res);
} else if (res == 'G') {

答案 1 :(得分:4)

您不应使用==比较字符串,使用equals()方法

 if (someString.equals("C")){
        return someString;
    } else if (someString.equals("G")) {
        return someString;
    }
  • ==检查两个变量是否引用同一个对象。
  • equals()方法检查对象的内容是否相同。
  • 所以如果==返回true,那么equals()方法也会返回true,因为它们指的是同一个对象因此它们是相等的

您可以找到string comparison with equals and assignment的绝佳解释 如果你想使用字符,

res = value.charAt(0);
if (res == 'C'){
    return Character.toString(res);
} else if (res == 'G') {
    return Character.toString(res);
 }

答案 2 :(得分:0)

试试这个

public static char findFirstChar(String string){
    return string.charAt(0);
}
    char out = findFirstChar("Rakesh");
    System.out.println("First Character:"+out);