Pas*_*ber 0 java eclipse behavior assertions
我在Java(Eclipse)中发现了一个奇怪的断言行为.简单的例子:如果我执行这个......
public static void main (String[] args) {
assert(getA() == "a") : "Invalid";
System.out.println("Assertion successful!");
}
private static String getA()
{
return "a";
}
Run Code Online (Sandbox Code Playgroud)
......它会告诉我"断言成功!" 正如它应该.但是如果我试试这个......
public static void main (String[] args) {
assert(getA() + "b" == "ab") : "Invalid";
System.out.println("Assertion successful!");
}
private static String getA()
{
return "a";
}
Run Code Online (Sandbox Code Playgroud)
...我得到一个AssertionError.为什么这个断言不会回归真实?
注意:
你需要付出代价
"a".equals(getA());
Run Code Online (Sandbox Code Playgroud)
第二种情况
"ab".equals("b".concat(getA()));
Run Code Online (Sandbox Code Playgroud)
原因: - ==用于比较对象引用,而equals()用于字符串值比较,这是您需要的.另外,第一个场景具有相同的字符串文字"a",因此,它返回true.但在第二种情况下,创建了一个新的String实例getA()+b,它与文字"ab"不同.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |