当我运行一些代码(稍后显示)时,我告诉它检查字符串=="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
你需要使用
if (shirt.equals("1"))
...
Run Code Online (Sandbox Code Playgroud)
这将比较String对象的实际内容,而不是它们的身份.
您已经使Java初学者误==用于测试字符串相等性.请改用该equals方法.
更长的解释是==Java 中的运算符测试两个对象引用是否相同; 即它测试左右操作数是否是同一个对象.但你有两个不同的字符串,包含相同的字符序列.它们是"相等"的字符串,但不是同一个对象.
作为一般经验法则,您应该始终使用equals比较字符串.
(有些情况==会起作用,但你真的需要了解你正在做什么才能确定.在绝大多数用例中,它根本不值得付出努力/风险.)
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |