如果条件是永久性的,函数调用中的变量是否会被调用?

时间:2013-12-09 09:00:04

标签: java if-statement conditional-statements

我想调用一个函数,但前提是它返回值true。函数本身在正常调用时修改全局变量;我想知道if语句是否永久存储这些更改,或者它是否仅测试函数的结果并在测试后将变量重置为先前的值?

换句话说,我可以使用此代码:

if(function() == true)
   function();

并且function只会被调用一次,还是会被调用两次?

5 个答案:

答案 0 :(得分:4)

答案是它会在条件中被调用一次,如果它返回true,那么它将被第二次执行。

答案 1 :(得分:1)

method被调用两次(前提是它在第一次运行时返回true),method所做的任何更改都是永久性的,除非你以某种方式明确地反转它们。

答案 2 :(得分:1)

function()是一种..方法。考虑一下:

private boolean function() {
   /* block of code */
   return true;
}

当您到达if语句时,会调用function()。意味着执行了代码块。然后,function()返回 true

现在,您输入了if块,然后再次执行function() ..意味着代码块将再次执行。

通常,如果您有一个返回boolean并执行某项操作的方法,则将结果分配给变量:

boolean result = function();

然后你可以在result上询问你想要的任何内容以查看方法的输出(通常true表示成功运行,false表示出现问题)。

答案 3 :(得分:0)

function()如果在第一个实例中返回true,则会被调用两次。

但是为什么你需要使用函数的返回值来决定是否调用该函数?您似乎可以将此逻辑合并到function()本身。如果调用者需要知道function()做了什么,您可以适当调整返回值。

还有一句话:如果你正在修改全局变量,那么你应该考虑并发问题。您可能需要将function()标记为synchronized

答案 4 :(得分:0)

如果您的函数在TRUE条件下返回IF,那么您的函数将被称为两次。 如果它返回FALSE,则IF条件中的函数将被称为一次