我遇到了一个奇怪的Java问题(已解决)。我问这个是因为我很好奇那里发生了什么。
有什么区别:
if(Transfers.protoSendLong(output, date.getTime())){}
简单地
Transfers.protoSendLong(output, date.getTime());
我看到的不同之处在于第一部作品而第二部作品不是:S 执行有什么不同吗?
我认为您不需要知道protoSendLong()即将回答的问题。如果您需要,请询问。
编辑:
这里有你方法的代码。这是我能给你的最多。
public static boolean protoSendLong(ObjectOutputStream output, long x) {
boolean r = false;
try {
output.writeLong(x);
r = true;
} catch (IOException ex) {
Logger.getLogger(Transfers.class.getName()).log(Level.SEVERE, null, ex);
}
return r;
}
答案 0 :(得分:2)
在调用该方法的两个片段中没有任何区别。在两种情况下都会调用它。如果该方法在一种情况下没有达到预期效果,则与此代码段无关。
答案 1 :(得分:0)
由于你在if语句中有函数调用,我们可以假设函数
Transfers.protoSendLong
返回布尔值。
在代码中,
if(Transfers.protoSendLong(output, date.getTime()))
{
"do something"
}
因此,仅当函数“Transfers.protoSendLong”返回TRUE时才执行“执行某些操作”。如果返回false,则跳过“do something”。
但是,如果是,
Transfers.protoSendLong(output, date.getTime());
可能返回TRUE或FALSE但没有任何内容会改变代码流,因为没有if语句或任何变量来捕获它。