2013-07-13 3 views
-2

다음 Java 코드에서 약간 혼란 스럽습니다. 먼저 할당 문을 참 또는 거짓 대신 부울 변수 ... boolean bvalue = (b = true)에 할당하는 것으로 보입니다.Java Boolean 할당 혼동

출력은 TRUE, FALSE, TRUE입니다. 출력의 세 번째이자 마지막 TRUE는 bvalue가 최초의 if-conditional에 대해 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"); 
+1

당신이 컴파일 확실 bvalue == FALSE '가 아닌'bvalue = false' –

+4

FYI는'if (bvalue == false)'대신'if (! bvalue)'를 사용합니다. –

답변

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"); 
0

하는 것과 같습니다

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

할당 연산자, =, 또한 반환 값을 가지고 있고 그것은의 값입니다 그래서 b와 bvalue는 모두 true가됩니다.

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

bvalue가 true이기 때문에 "TRUE"를 출력합니다. 여기

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

당신은 == 대 = 대신 비교 하나의 할당 연산자를 사용하므로 bvalue 거짓 할당되고, 그 또한이 다른 경로 및 인쇄을 "FALSE 만드는 if 문에 반환 ".

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

여기 당신은 거짓으로, 거짓 bvalue를 비교하고, 그 인쇄됩니다 "TRUE"진정한 성명, 그래서.

+0

설명해 주셔서 감사합니다. 이것은 매우 도움이되었습니다. – user2578561

+0

@ user2578561 답변에 만족하면 대답 중 하나를 대답으로 선택하십시오. –

1

Discription : -

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"); 

출력 : - 나는 그것이`수 있습니다 생각하기 때문에 TRUE FALSE TRUE