理解Java中的If语句

时间:2014-04-13 12:17:53

标签: java if-statement boolean

我在理解以下代码时遇到了问题:

public class TestIf {


    public static void main(String[] args) {
        if (true){
            if (false){
                System.out.println("true false");
            }

            else{
                System.out.println("true true");
            }

        }

    }

}

当我运行它时,它打印true true。

我不明白为什么这段代码首先被执行:

if(true)

如果这里究竟是什么呢?它不像声明了布尔值,例如

boolean bol = true;

if (bol == true) { 
 //execute the rest of the code
}

5 个答案:

答案 0 :(得分:2)

if(true)

无论if语句总是返回true是什么都是一样的。你想在if语句中做这样的事情的唯一一次是为了快速和肮脏的测试目的。

if(false)

如果评价总是会失败,那么无论如何都是一样的。和之前一样。在if语句中,你永远不会在现实生活中这样做。 你的布尔的例子是完全相同的。但在这种情况下,您正在跳过额外的代码行来使用 name 声明布尔值。使用名称声明变量的唯一原因是您可以稍后重复使用或更改它。在这种情况下,你很容易在if中放置一个布尔值,一旦你离开if语句,它就会永远丢失。

然而,有时这种真/假评估会很有用。例如

Boolean test = true;
while(true)
{
//ask for user input...
if(test) break;
}

while将始终评估为true并将永远循环UNTIL它收到break命令。但是,除了在if中运行方法之外,我不会用if语句知道任何很酷的技巧。

答案 1 :(得分:2)

如果if内的表达式评估为true,则会输入if

boolean bol = true;

if (bol == true) { 

上面发生了什么? bol是否等于true?是。因此(bol==true)相当于仅编写(true)

所以上面的代码与

相同
if (true) {

现在考虑你的代码。

    if (true){ // enters 'if' since value of expression inside 'if' is true
        if (false){ // goes to else
            System.out.println("true false");
        }

        else{
            System.out.println("true true"); // prints
        }

    }

答案 2 :(得分:0)

对于if语句,如:

if (condition)
{
    statements1;
}
else
{
    statements2;
}

首先评估condition,如果condition==truestatements1将被评估,否则,statements2将被评估。


回到你的例子:

if (true){
    if (false){
        System.out.println("true false");
    }
    else{
        System.out.println("true true");
    }
}

相当于

if (false){
    System.out.println("true false");
}
else{
    System.out.println("true true");
}

并进一步等同于

System.out.println("true true");

答案 3 :(得分:0)

在Java中,true和false是常量。

所以以

开头的块
if(true)
将始终执行

,而以

开头的块
if(false)

永远不会被执行

做类似

的事情
boolean bol = true;

... // more process here

if (bol) { 
 //execute the rest of the code
}

是不同的,因为bol变量可以是真或假,取决于先前的处理

答案 4 :(得分:0)

if语句的语法是这样的:

if (expression) {
}

()内,您放置了一个可以评估为truefalse表达式。如果表达式求值为true,则if语句将执行if下的代码块。否则,您的解释器将转到else语句,这可以执行另一个if语句,或者只是默认为某个代码块。

在您的示例中,表达式只是true,因此始终求值为true,以便if block始终执行。

同样的逻辑适用于falsefalse当然总是评估为false,因此永远不会执行这些块。