orden de ejecución de la imprenta

Este progtwig da salida –

A 1 2 

¿No debería dar salida?

 1 A 2 

ya que primero ai debe imprimir 1 y luego a.getI () se ejecuta y debe imprimir A 2

 public class A1{ int i=1; public int getI(){ System.out.print("A "); return i+1; } public static void main(String args[]){ A1 a=new A1(); System.out.print(a.i+" "+a.getI()); } } 

En esta expresión:

 a.i+" "+a.getI() 

La llamada a a.getI() se evalúa primero, y luego la cadena se forma concatenando ai más a.getI()

Lo primero que hace la JVM es construir el String. Así comienza aquí:

 ai + " " 

Esto se hace primero. Ahora, tenemos "1 " . A continuación se encarga de esto:

 "1 " + a.getI() 

Para unir las dos partes, se ejecutará el método para saber qué unir. Entonces, ahora ingrese el método:

 System.out.print("A "); return i+1; 

Se ejecuta la primera statement de impresión. "A " se imprime en la consola ( 1 ). Ahora el método devuelve i + 1 , que es 2 . Esto significa que tenemos esto:

 "1 " + "2" 

que es "1 2" . En este punto, la construcción de la cadena está terminada, por lo que se pasa a println() . Ahora se imprime "1 2" en la consola. ( 2 )

Como puede ver, primero se ejecutó ( 1 ) y luego ( 2 ). Entonces, en la consola esto resulta en:

 A 1 2