Duvida em comparar boolean..?

Folks,

não entendi o conceito de comparação com boolean
na resposta abaixo que foi true …



		
		 boolean b = false;
		  if (b = true) { System.out.println("b is true");
		  } else { System.out.println("b is false");  }

qual seria o conceito então para essas comparações :



boolean a = true;
boolean b = true;


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

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

n

É uma questão de lógica, vc setou o b como false na linha 1. Na linha 2 vc verifica se b é setado true, o que realmente vc faz. Então é true. O correto seria: b==true

boolean a = true;   
boolean b = true;   
  //declarou variaveis como true
  
          if (b = true) { System.out.println("b is true");   
          } else { System.out.println("b is false");  }   // a resposta sera true pq vc usa um operador de igualdade nao de comparação: vc atribui
//ao invez de comparar
  
      if (a == true) { System.out.println("a is true");   
          } else { System.out.println("a is false");  
//a resposta tb ´´e true, pq quando vc declarou ela vc declarou como true. Na comparação vc comparou se é true, então é veradeiro.

dica: para entender melhor, declare a como false e b como true, depois b como false e a como true. Por fim, os dois como false.

= Atribuição
== Comparação

No primeiro if, você atribui depois testa !

No segundo só esta comparando.

Não li o tópico inteiro, mas no primeiro exemplo já vi

a comparação é feita através do ==. Um simples = é operador de atribuição. Portanto no seu primeiro exemplo a lógica fica

1 - boolean b = false; b é criado e o valor false é atribuido
2 - if (b = true); Primeiro é atribuido TRUE para o B e depois é feito o IF… IF (TRUE) por isso entra no “b is true”. Para ser false, deveria ser if (b == true)…

Entendeu?

Foi só uma falta de atenção:

    boolean b = false;  
  if (b = true) { System.out.println("b is true");  
   } else { System.out.println("b is false");  }  

está atribuindo true a b, note que não está usando “==” e sim “=” (atribuição)