Java Programming - Operators and Assignments - Discussion

Discussion Forum : Operators and Assignments - Finding the output (Q.No. 10)
10.
What will be the output of the program?
class SSBool 
{
    public static void main(String [] args) 
    {
        boolean b1 = true;
        boolean b2 = false;
        boolean b3 = true;
        if ( b1 & b2 | b2 & b3 | b2 ) /* Line 8 */
            System.out.print("ok ");
        if ( b1 & b2 | b2 & b3 | b2 | b1 ) /*Line 10*/
            System.out.println("dokey");
    }
}
ok
dokey
ok dokey
No output is produced
Compilation error
Answer: Option
Explanation:

The & operator has a higher precedence than the | operator so that on line 8 b1 and b2 are evaluated together as are b2 & b3. The final b1 in line 10 is what causes that if test to be true. Hence it prints "dokey".

Discussion:
21 comments Page 1 of 3.

MUNNA PRAJAPATI said:   3 years ago
&& operator checks the next condition if the first will be true.
& operator checks all conditions whether the first is true or false.

So at Line 8 final output of if the condition expression is false
And at Line 10 final output of if the condition expression is true.
Therefore output would be "dokey".

Manjit said:   3 years ago
@All.

First condition:

(b1 & b2 | b2 & b3 | b2).
(true & false | false & true | false)
(1&0|0&1|0)
(false | false | false).
(0|0|0)
(false).
(0)

Second Condition:

(b1 & b2 | b2 & b3 | b2 | b1).
(true & false | false & true | false | true).
(1&0|0&1|0|1)
(false | false | false | true).
(0|0|0|1)
(false | true).
(0|1)
(true).
(1).
(3)

Rohit Singh Rathour said:   4 years ago
It should give compilation error because in java && and || operator is used for condition not single & |.
(1)

Siva said:   6 years ago
"if" only evaluates true condition. i.e. if(true) entry and if(false) get out.

if ( b1 & b2 | b2 & b3 | b2 ){ /* Line 8 */ flase | flase | flase| ---> if(false) get out.
System.out.print("ok ");
}
if ( b1 & b2 | b2 & b3 | b2 | b1 ){ /*Line 10*/ flase | flase | flase| true---->"if" only evaluates true condition

System.out.println("dokey");

o/p:-- dokey
(1)

Sangeetha R said:   7 years ago
Logical AND (&&):

It evaluates to "true" if and only "if both operands of logical AND are true". If either or both operands are false, it evaluates to false.

Logical OR (||):
It evaluates to true if "either or both" of its operands are "true". If both operands are false, it evaluates to false.

Preethi said:   7 years ago
I can't understand the short-circuit logical operator and boolean logical operator difference, can anyone explain?

Chander Kant said:   8 years ago
"if" only evaluates true condition. i.e. if(true) entry and if(false) get out.

Bansal said:   8 years ago
The difference between (&& or &) and (|| or |) is only that (&& and ||) performs a short-circuit whereas (& and |) does not otherwise operations of all && and &,(|| or | ) is same both as AND, OR operators.

Suresh said:   8 years ago
Nice explanation. Thank for explaining it.

Neel said:   9 years ago
Nice explanation @Mayur.


Post your comments here:

Your comments will be displayed after verification.