[resolvida]Operador Ternário

Bom Dia p/ todos;

Bom galera sou novo nesse mundo loco que e o Java , pois bem to com um duvida sobre a seguinte função dos operadores tenário, pra facilitar esse e o codigo que tenho duvida em relação a sua sainda:

 class Calculo{

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


}

Bom eu sei que a saída desse código será apenas a palavra hello em minusculo , mais ai e que fica a parte q não entendi porque não e impresso também a palavra world em minusculo :?:

Bom galera sou novo tanto no java quanto no forum então se tiver feito algo de errado me desculpe !!!

porque é uma condição, ou vai ser uma saída ou a outra.

(b=!b)?(b=!b)?"Hello":"hello"

testou a primeira, é false, testou a segunda é false, imprime hello e termina as verificações.
se fosse true na segunda verificação iria imprimir o Hello e tbem sairia.

O operador ternário é uma espécie de “if”. Se um lado da expressão for avaliado, o outro não será.

Melhorando um pouco a identação e colocando parênteses fica mais fácil de entender:

[code]class Calculo {

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

}
[/code]

Essa questão também mostra uma maneira porca e mal escrita de como não se deve usar o operador ternário e a atribuição.

Note que a primeira avaliação de b = !b dá true, o que faz ele entrar na parte de cima.
A segunda, dá false, pois a atribuição inverteu o valor de b, o que faz ele entrar em hello.

Bom galera vlw’s mesmo agora entendi o que realmente acontece ViniGodoy e kleberdamasco brigadão pela explicação, e Vini realmente da forma que vc endentou o codigo consegui compreender melhor !!

Vlw’s Galera :smiley: :smiley: