10

这总是让我很困惑。有人可以解释一下吗?我的困惑是 - 布尔默认为 false。所以在下面的例子中,它是if在状态未打开时进入循环,即它是关闭if (condition is false) 还是在状态打开时进入if循环,换句话说if (condition is true)

boolean turnedOn;
if (turnedOn) {
    //do stuff when the condition is false or true?
} else {
    //do else of if
}

我知道这是一个非常基本的问题,但如果你能用非常基本的语言解释答案,那就太好了。:) 随意指出我重复的帖子有很好的解释(我没有找到一个我可以清楚地得到它的帖子)。如果您想让帖子更通用,也可以随意更改帖子的主题。

4

11 回答 11

27

可以,然后呢..

// As you already stated, you know that a boolean defaults to false.
boolean turnedOn;
if(turnedOn) // Here, you are saying "if turnedOn (is true, that's implicit)
{
//then do this
}
else // if it is NOT true (it is false)
{
//do this
}

现在更有意义了吗?

if语句将评估您放入其中的返回布尔值的任何代码,如果评估返回 true,则进入第一个块。否则(如果值为真,则为假,因为布尔值可以为真或假)它将进入 - 是的,你猜对了 -else {}块。

一个更详细的例子。

如果我被问到“你饿了吗?”,简单的答案是肯定的(真的)。或否(假)。

boolean isHungry = true; // I am always hungry dammit.
if(isHungry) { // Yes, I am hungry.
   // Well, you should go grab a bite to eat then!
} else { // No, not really.
   // Ah, good for you. More food for me!

   // As if this would ever happen - bad example, sorry. ;)
}
于 2013-10-03T06:58:49.683 回答
12

在您的示例中,IF 语句将在 state = true 时运行,这意味着 else 部分将在 state = false 时运行。

if(turnedOn == true) is the same as if(turnedOn)

if(turnedOn == false) is the same as if(!turnedOn)

如果你有:

boolean turnedOn = false;

或者

boolean turnedOn;

然后

if(turnedOn)
{

}
else
{
    // This would run!
}
于 2013-10-03T06:59:28.047 回答
3

ABoolean(带有大写“B”)是一个布尔对象,如果没有赋值,则默认为空。boolean(带有小写“b”)是一个布尔原语,如果没有赋值,则默认为 false。

Boolean objectBoolean;
boolean primitiveBoolean;

System.out.println(objectBoolean); // will print 'null'
System.out.println(primitiveBoolean); // will print 'false'

引文

因此在您的代码中,因为声明了带有小“b”的布尔值,因此它将设置为 false

boolean turnedOn;
    if(turnedOn) **meaning true**
    {
    //do stuff when the condition is false or true?
    }
    else
    {
    //do else of if ** itwill do this part bechae it is false
    }

if(turnedon) 测试一个值是否为真,您没有为打开分配一个值使其为假,使其执行 else 语句:)

于 2013-10-03T07:00:58.577 回答
1
boolean state = "TURNED ON";

不是 Java 有效代码。boolean 只能接收布尔值(真或假)并且"TURNED ON"是一个字符串。

编辑

现在您正在谈论一个循环,并且您的代码不包含任何内容。您的 varstate为 false ,因为布尔默认值并且您执行 else 子句。

于 2013-10-03T06:54:55.823 回答
1
boolean turnedOn;
    if(turnedOn)
    {
    //do stuff when the condition is true - i.e, turnedOn is true
    }
    else
    {
    //do stuff when the condition is false - i.e, turnedOn is false
    }
于 2013-10-03T06:59:27.807 回答
1

假设你想检查一个布尔值。如果是真的,做点什么。否则,做点别的。你可以写:

if(condition==true){

}
else{   //else means this checks for the opposite of what you checked at if

}

取而代之的是,您可以像这样简单地做到这一点:

if(condition){  //this will check if condition is true 

}
else{ 

}

反过来。如果你要在条件为假时做某事,如果条件为真则做其他事情。然后你会写:

if(condition!=true){   //if(condition=false)

}
else{

}

但遵循简单的路径。我们的确是:

if(!condition){  //it reads out as: if condition is not true. Which means if condition is false right?

}
else{

}

想想看。你很快就会得到它。

于 2016-11-05T19:10:50.497 回答
0

布尔默认值仅对类的字段为 false。如果在方法中,您必须通过 true 或 false 来初始化变量。因此,例如在您的情况下,您将遇到编译错误。

此外,我真的不明白这一点,但进入 if 的唯一方法是将条件评估为 true。

于 2013-10-03T06:57:11.490 回答
0

假设state在您的实际代码中设置了有效的布尔值,那么以下条件将成功

if(state)

当状态为布尔值时为 TRUE

如果条件检查表达式是否被评估为 TRUE/FALSE。如果表达式很简单true,则条件将成功。

于 2013-10-03T06:57:47.400 回答
0

这就是if行为方式。

if(turnedOn) // This turnedOn should be a boolean or you could have a condition here which would give a boolean result.
{
// It will come here if turnedOn is true (i.e) the condition in the "if" evaluates to true
}
else
{
// It will come here if turnedOn is false (i.e) the condition in the "if" evaluates to false
}
于 2013-10-03T06:58:07.367 回答
0
if (turnedOn) {
    //do stuff when the condition is false or true?
}
else {
    //do else of if
}

它可以写成:

if (turnedOn == true) {
        //do stuff when the condition is false or true?
    }
else { // turnedOn == false or !turnedOn
        //do else of if
}

因此,如果您的turnedOn变量为 true,则将调用 if,如果将其分配为 false,则将调用else 。如果您不明确分配布尔值 eqturnedOn = true

于 2013-10-03T06:59:24.030 回答
0

if 块的语法如下,

if(condition){
// Executes when condition evaluates to true.
}
else{
// Executes when condition evaluates to false.
}

在您的情况下,您直接传递一个布尔值,因此不需要评估。

于 2013-10-03T06:59:31.553 回答