java有和没有差异

时间:2013-10-24 10:29:40

标签: java sockets if-statement

我遇到了一个奇怪的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;

}

2 个答案:

答案 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语句或任何变量来捕获它。