if(boolean)总是执行

时间:2014-02-03 15:42:12

标签: java

这是我的代码简化

private static boolean isTrue()
{
    return false;
}


public void Update()
{
    if (isTrue())
        doSomething();
}

由于某些奇怪的原因doSomething()总是被执行,无论isTrue()返回什么。 为什么呢?

编辑:在关闭if语句后,我在屏幕外的某个地方有一个分号:

if (false);
    doSomething();

像这样doSomething()总是被执行。

2 个答案:

答案 0 :(得分:12)

  

由于一些奇怪的原因,DoSomething()总是被执行,无论如何   IsTrue返回。为什么呢?

只有在出现以下一种或多种情况时才会这样:

  • 还有其他线程正在调用doSomething()
  • ;之后您if。 ✓
  • 你是从其他地方打来的。
  • 这不是代码。
  • 这一天到了,电脑控制着世界。

重要说明,不仅仅是问题:请关注Java Naming Conventions


编辑完成后,我会解释为什么它总是被执行。

这只是因为

if(something);
{
   System.out.println("I'll be always printed!");
}

相当于

if(something) { }
{
   System.out.println("I'll be always printed!");
}

始终拥有{}是一种很好的做法,即使if的正文仅包含一个陈述,它也更清晰,并且会有所帮助如果你想在将来添加行,可以避免将来可能出现的错误,例如@GrijeshChauhan提到的。

答案 1 :(得分:0)

public class Main {

/**
 * @param args
 */
public static void main(String[] args) {

    Update();
}
private static boolean IsTrue()
{
    return false;
}


public static void Update()
{
    if (IsTrue())
        DoSomething();
}
public static void DoSomething()
{
   System.out.println("In DoSomething");
}

}

这段代码按设计工作。如果IsTrue()方法重新为true,那么它将打印“In DoSomething”。