2012-04-28 9 views
7

Este programa da salida -de impresión de la ejecución

A 1 2 

¿No debería dar salida -

1 A 2 

desde la primera IA debe imprimir 1 y luego a.getI() 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()); 
    } 
} 
+1

No. a.getI() esto se llamará primero –

Respuesta

11

En esta expresión:

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

La llamada a a.getI() se evalúa en primer lugar, y después la cadena está formada por la concatenación de a.i más a.getI()

7

Lo primero que hace la JVM está construyendo la cadena. Así que comienza aquí:

a.i + " " 

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

"1 " + a.getI() 

Para unir las dos partes, el método se ejecutará para saber qué unir. lo tanto, ahora entran en el métodos: se ejecuta

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

La primera sentencia print. "A " se imprime en la consola(). Ahora el método devuelve i + 1, que es 2. Esto significa que tenemos esto:

"1 " + "2" 

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

Como se puede ver, en primer lugar era (1 ) y luego ejecutados (2 ). Entonces, en la consola esto resulta en:

A 1 2 
Cuestiones relacionadas