Условный (троичный) оператор работает следующим образом:
(предикат)? (onTrueValue): (onFalseValue);
так что в вашем случае мы имеем:
("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");
Что означает:
Is A equal to A?
If yes -> return Is B equal to B
If yes -> return 1;
If no -> return 2;
If no -> return 3;
Аналогично:
condition1 ? (condition2 ? val1 : val2) : val3;
И некоторые тесты для проверки
// Prints 1 as both conditions are true.
System.out.println("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");
// Prints 3 as first condition fails.
System.out.println("A"=="notA" ? ("B"=="B" ? "1" : "2") : "3");
// Prints 2 as second condition fails.
System.out.println("A"=="A" ? ("B"=="notB" ? "1" : "2") : "3");
Также обратите внимание, что вы используете оператор ==
для сравнения строк. В этом конкретном случае это не даст никакой разницы, просто используйте его с осторожностью ...