Envoyé par
joel.drigo
Donc pour résumer, quand Java traite System.out.println(10 + nom==null ? 0 : 10);, il considère que, + étant précédent à l'opérateur ternaire, il doit calculer le résultat du +, un opérateur binaire, donc un + entre les deux opérandes de part et d'autre du +, donc 10 et nom. 10+"x" donc "10x". Puis on évalue la condition, "10x" == null, qui vaut false, donc le résultat de l'évaluation par l'opérateur ternaire est la valeur après le :, donc 10. CQFD.
Alors que dans l'autre cas, System.out.println(10 + (nom==null ? 0 : 10));, les parenthèses imposent qu'on évolue le résultat de l'opérateur ternaire en premier, qui donne 10, puisque nom n'est pas null, puis on calcule 10 + 10, donc ça fait 20.