Ajuda em questao logica

Olá pessoal, tudo bem?
Eu nao entendi uma questao lógica aqui, alguem conseguiria me explicar por que sai “hello” nessa questao:

public static void main(String args[]) { boolean b = false; String s = (b = !b) ? (b = !b) ? "Hello" : "hello" : (b != b) ? "world" : "World"; System.out.println(s); }

Agradecido desde já.

linha 2: b é falso.
linha 3: b recebe a negação de b, sendo assim, b é true. Como b é true, entra na primeira expressão do operador ternário, que é outra expressão com operador ternário, onde b recebe novamente a negação de b, tornando b falso (pois ele era true). Como b é falso no segundo operador ternário, é retornado a segunda parte do mesmo que é “hello” para a String s.

[]'s

[quote]linha 2: b é falso.
linha 3: b recebe a negação de b, sendo assim, b é true. Como b é true, entra na primeira expressão do operador ternário, que é outra expressão com operador ternário, onde b recebe novamente a negação de b, tornando b falso (pois ele era true). Como b é falso no segundo operador ternário, é retornado a segunda parte do mesmo que é “hello” para a String s.

[]'s[/quote]

Obrigado, davidbuzatto. Era isso mesmo que eu queria (:

Outra pergunta(se possível).
Queria saber se tem um jeito específico de ler esta parte do codigo:

String s = (b = !b) ? (b = !b) ? "Hello" : "hello" : (b != b) ? "world" : "World";

Outra coisa… porque não mostrou “world” ou “World”?

Pelo que parece você ainda não entendeu muito bem operador ternário.

Exemplo:

boolean b = false;  

System.out.println( b ? "b é true" : "b é false" );

//é o mesmo que:
		
if(b){
	System.out.println( "b é true" );
}
else{ 
	System.out.println( "b é false" );
}

outra coisa que pode ajudar é a identação

		 String s = (b = !b) ? 
				 			(b = !b) ? "Hello" : "hello" : 
				 			(b != b) ? "world" : "World"; 

Valeu, entendi =P