在以下Java代码中,if语句条件不会计算为true,并且会跳过其块.
public void options(String input)
{
if(input == "x")
System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)
输入具有正确的值,为什么跳过System.exit(0)?
Jon*_*eet 12
您要比较两个字符串引用的标识,而不是它们是否引用相等的字符串.这不是跳跃的if声明-它评估的条件,并发现它是假的,所以它不会进入人体.试试这个:
if (input.equals("x"))
Run Code Online (Sandbox Code Playgroud)
或者如果input可能为null并且您不希望它导致异常:
if ("x".equals(input))
Run Code Online (Sandbox Code Playgroud)
这不仅仅是字符串 - 只要你有==,它将比较两个表达式的值......如果这些值是引用,它只是比较这两个引用是否相等,即它们是否引用相同的对象.equals另一方面,多态应用 - 因此调用它的对象可以确定该类的相等性.
另一个例子:
Integer x = new Integer(1000);
Integer y = new Integer(1000);
System.out.println(x == y); // false
System.out.println(x.equals(y)); // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |