Ale*_*oss 2 java string string-comparison
以下问题来自我几周前的测验并且不正确,但没有提供答案:
请考虑以下代码,其中不包含编译错误:
Run Code Online (Sandbox Code Playgroud)String secret = "Ellie"; Scanner kb = new Scanner(System.in); System.out.println("Guess which name I'm thinking of:"); String guess = kb.next(); if (guess == secret) { System.out.println("Wow! You're smart!"); } else { System.out.println("Wrong!"); System.out.println("You guessed: " + guess); System.out.println("The correct answer was: " + secret); }假设用户在提示符处输入"Ellie".会产生什么输出,为什么输出而不是其他输出?
这是我错误的答案:
输出将是else语句"错误!" 因为字母'E'的大写.对此的解决方案是将String secret更改为"ellie"以及用户的猜测,或者可以将ignoreCase关键字写入String secret.
该程序实际输出"错误",我测试了它.
除了简单地知道答案之外,有人可以向我解释这个问题,以便我能更好地理解这个概念吗?
==进行参考比较,因此即使两个字符串引用相等,也总是会说"错误!".为了使其正确匹配,必须使用它secret.equals( guess ).