-1

我对下面的java代码有点困惑。首先,它似乎将赋值语句分配给布尔变量......boolean bvalue = (b = true)而不是真或假。

那么输出是TRUE, FALSE, TRUE. 输出的第三个也是最后一个 TRUE 让我感到困惑,因为第一个 if 条件的 bvalue 评估为 true。我没有看到任何将 false 显式分配给 bvalue 的代码。任何有用的意见将不胜感激。

boolean b;
boolean bvalue = (b = true);

if (bvalue)
    System.out.println("TRUE");
else
    System.out.println("FALSE");

if (bvalue = false)
    System.out.println("TRUE");
else
    System.out.println("FALSE");

if (bvalue == false)
    System.out.println("TRUE");
else
    System.out.println("FALSE");
4

3 回答 3

4

=是赋值运算符。它返回分配的值。所以代码

if (bvalue = false) 
System.out.println("TRUE");
else System.out.println("FALSE");

相当于

bvalue = false;
if (bvalue) 
System.out.println("TRUE");
else System.out.println("FALSE");
于 2013-07-13T06:28:15.087 回答
2

说明:-

    boolean b;
        boolean bvalue = (b = true);    //firstly true assigned to b by (b=true) then b assigned to bvalue (bval=true)
        if (bvalue) // check if  bvalue = true & succeed 
        System.out.println("TRUE");  // printed
        else System.out.println("FALSE");

        if (bvalue = false) // firstly assign false to bvalue then if executes 
        System.out.println("TRUE");
        else System.out.println("FALSE"); // printed as bvalue is false

        if (bvalue == false)  // check if bvalue is false & success
        System.out.println("TRUE"); //printed as bvalue is false
        else System.out.println("FALSE");

输出:- 真假真

于 2013-07-13T06:30:20.523 回答
0

让我为你分解一下:

boolean b;
boolean bvalue = (b = true);    

赋值运算符 = 也有一个返回值,它是赋值的值,所以 b 和 bvalue 都被赋值为 true。

if (bvalue) 
System.out.println("TRUE");
else System.out.println("FALSE");

由于 bvalue 为真,这将打印“真”。

if (bvalue = false) 
System.out.println("TRUE");
else System.out.println("FALSE");

在这里,您使用赋值运算符而不是比较运算符 = vs ==,因此 bvalue 被赋值为 false,这也将返回给 if 语句,使其采用 else 路径并打印“FALSE”。

if (bvalue == false) 
System.out.println("TRUE");
else System.out.println("FALSE");

在这里,您将 bvalue(为 false)与 false 进行比较,这是一个正确的陈述,因此“TRUE”被打印出来。

于 2013-07-13T06:29:56.290 回答