Java if()不起作用

che*_*505 3 java numbers

当我运行一些代码(稍后显示)时,我告诉它检查字符串=="1",如果是,输出"它是1!",否则输出字符串.

码:

double shirt3 = Math.random() * 9;
String shirt2 = Double.toString(shirt3);
char shirt1 = shirt2.charAt(0);
String shirt = Character.toString(shirt1);

if(shirt == "1") {
    System.out.println("It's 1!");
} else {
    System.out.println(shirt);
}
Run Code Online (Sandbox Code Playgroud)

输出:

7
4
8
1
7
1
7
7
6
0

Dan*_*rov 9

你需要使用

if (shirt.equals("1"))
    ...
Run Code Online (Sandbox Code Playgroud)

这将比较String对象的实际内容,而不是它们的身份.


Ste*_*n C 5

您已经使Java初学者误==用于测试字符串相等性.请改用该equals方法.

更长的解释是==Java 中的运算符测试两个对象引用是否相同; 即它测试左右操作数是否是同一个对象.但你有两个不同的字符串,包含相同的字符序列.它们是"相等"的字符串,但不是同一个对象.

作为一般经验法则,您应该始终使用equals比较字符串.

(有些情况==会起作用,但你真的需要了解你正在做什么才能确定.在绝大多数用例中,它根本不值得付出努力/风险.)