¿Cuál es el resultado de ejecutar el siguiente código?
paquete com.test; public class Inc {public static void main (string [] args) {inc inc = new Inc (); int i = 0; Inc.fermin (i); i = i ++; System.out.println (i); } vacío fermin (int i) {i ++; }}El resultado es: 0
El resultado de ejecutar el código similar anterior en C/C ++ es: 1. ¿Por qué es esto?
Esto se debe a que Java usa un mecanismo de variable de caché intermedio:
i = i ++; equivalente a:
temp = i; (I en el lado derecho del signo igual)
i = i+1; (i a la derecha del signo igual)
i = temp; (I en el lado izquierdo del signo igual)
Y i = ++ i; es equivalente a:
i = i+1;
temp = i;
i = temp;
Explicación detallada:
Hay dos áreas de almacenamiento en JVM, una es el área de almacenamiento temporal (una pila, llamada pila a continuación), y la otra es el área variable.
JVM ejecutará esta declaración como esta:
Paso 1 JVM Copie El valor de I (su valor es 0) al área de variable temporal (temp = 0).
Paso 2 Agregue el valor del área variable I al 1, y el valor de I es 1.
Paso 3 Devolver el valor del área de variable temporal (temp). Tenga en cuenta que este valor es 0 y no se ha modificado.
Paso 4 El valor de retorno se asigna a I en el área variable, y el valor de I se restablece a 0.
No hay otra variable temporal o espacio temporal para guardar I en C/C ++. Todas las operaciones se completan en un espacio de memoria, por lo que es 1 en C/C ++.
La introducción anterior al problema de autoinforme en Java es todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.