为什么这会返回真实?
String b = "(5, 5)";
String a = "(7, 8)" ;
if(a.equals(b));
{
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}
输出:
Somehow "(7, 8)" and "(5, 5)" are the same
答案 0 :(得分:5)
您的代码相当于:
if(a.equals(b)) { }
{
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}
因此if
的主体不包含该语句,因此无论条件如何,总是执行的块中的print语句。
请参阅JLS - 14.6. The Empty Statement:
空语句不执行任何操作。
EmptyStatement:
;
执行空语句总是正常完成
答案 1 :(得分:4)
你的if语句之后有;
。
使用:
if(a.equals(b)) {
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}
看看this answer。
答案 2 :(得分:1)
if(a.equals(b));<-----
你有一个极端;那里和陈述就此结束。
这就像写作
if(a.equals(b));
和一个块
{
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}
所以摆脱额外的;
答案 3 :(得分:0)
您的if条件是否满足,但自;
以来没有任何内容会执行。
if(a.equals(b)); // ; this is equal to if(a.equals(b)){}
按如下方式更正
if(a.equals(b)){
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}
答案 4 :(得分:0)
因为您在;
语句后键入了if
。然后它将被评估为if(a.equals(b)){};
,这意味着什么都不做。
String b = "(5, 5)";
String a = "(7, 8)" ;
if(a.equals(b)); <-- remove this ';'
{
System.out.printf("Somehow \"%s\" and \"%s\" are the same" ,a,b);
}