script operator assignment java conditional-operator short-circuiting

java - operator - js var ||



EvaluaciĆ³n ternaria de Java(inmediata si) (4)

No puedo encontrar la parte relevante de la especificación para responder a esto. En una declaración de operador condicional en Java, ¿se evalúan los argumentos verdadero y falso?

Entonces, ¿podría el siguiente lanzar una NullPointerException?

Integer test = null; test != null ? test.intValue() : 0;


Como quería la especificación, aquí está (a partir de la sección 15.25 ¿Operador condicional?: , La última oración de la sección):

La expresión de operando no elegida no se evalúa para esa evaluación particular de la expresión condicional.


No, no pudo. Eso es lo mismo que

Integer test = null; if ( test != null ) { test = test.intValue(); } else { test = 0; }


Sé que es un post antiguo, pero mira un caso muy similar y luego vota: P

Respondiendo a la pregunta original: solo se evalúa un operando PERO:

@Test public void test() { Integer A = null; Integer B = null; Integer chosenInteger = A != null ? A.intValue() : B; }

Esta prueba arrojará siempre NullPointerException y, en este caso, IF statemat no es equivalente a?: Operator.

El motivo está aquí http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.25 . La parte sobre el boxeo / unboxing está enredada, pero se puede entender fácilmente mirando:

"Si uno de los segundo y tercer operandos es de tipo boolean y el tipo del otro es de tipo Boolean , entonces el tipo de expresión condicional es boolean ".

Lo mismo se aplica a Integer.intValue()

¡Atentamente!


la sintaxis es incorrecta

Prueba de enteros = (test! = Null)? test.intValue (): 0;

Espero eso ayude ....