orden de evaluación de subexpresiones en una expresión Java

Tengo el siguiente fragmento de código:

int x=2,y=3;
if ( (y == x++) | (x < ++y) )
// rest of code

Sé que en C ++ se le enseña a no confiar en el orden de evaluación de la subexpresión, porque no se garantiza que sea ningún orden. Por lo tanto, este código sería erróneo y no se garantiza que el valor booleano generado por la expresión en la condición sea verdadero (y podría incrementarse antes de que se evalúe en la primera prueba de igualdad, por ejemplo). Desde que leí este código en un libro de certificación de Java, supongo que este no es el caso con Java ... Quiero decir, ¿estoy seguro de que el orden de evaluación en Java siempre se deja de derecha a derecha? Por lo tanto, la expresión anterior siempre debe ser verdadera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta