这是我的代码简化
private static boolean isTrue()
{
return false;
}
public void Update()
{
if (isTrue())
doSomething();
}
由于某些奇怪的原因doSomething()
总是被执行,无论isTrue()
返回什么。
为什么呢?
编辑:在关闭if语句后,我在屏幕外的某个地方有一个分号:
if (false);
doSomething();
像这样doSomething()
总是被执行。
答案 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”。