¿Has hecho esta pregunta de la entrevista Java correctamente?

public class qusetion {
	public static void main(String[] args) {
		int i = 1;
		i = i++;
		int j = i++;
		int k = i + ++i * i++;
		System.out.println("i:"+i);
		System.out.println("j:"+j);
		System.out.println("k:"+k);
	}
}

Me gustaría preguntar, ¿cuáles son los resultados de i, j y k?

Piénselo, la respuesta es:

i:4
j:1
k:11

Por qué, a continuación, analizaremos gradualmente este proceso:

La primera oración es muy simple: establezca la constante i = 1;

Segunda oración: i = i ++;

                                                         

Este proceso requiere que lo comprendamos. A partir de "=", el número de asignación es el más lento :

  • El primer paso es poner el valor de i en la pila, luego i-> 1
  • El segundo paso: el valor de i se incrementa en 1, i-> 2
  • El tercer paso: asignar el valor 1 en la pila a i, i-> 1

Tercera oración: j = i ++; igual que la segunda oración

                                                    

  • El primer paso es poner el valor de i en la pila, luego i-> 1
  • El segundo paso: el valor de i se incrementa en 1, i-> 2
  • El tercer paso: asigne el valor 1 en la pila a [j], j-> 1
  • En este punto se puede determinar que el resultado final j es 1

Cuarta oración: k = i + ++ i * i ++;

                                    

  • El primer paso es poner el valor de i en la pila, luego i-> 2
  • El segundo paso: ++ i: después de que el valor de i se acumule en 1, colóquelo en la pila, i-> 3
  • El tercer paso: i ++: el valor de i se coloca en la pila y se incrementa en 1, i-> 4. En este momento, la operación de i termina, y finalmente se determina que soy 4
  • Se calculan los tres números en la pila, y el resultado es 3 * 3 + 2 = 11, asignado a k, y finalmente se determina que k es 1

 

Resolución de problemas (distribución de flores)

Publicó 20 artículos originales · ganó 15 · vistas 216

Supongo que te gusta

Origin blog.csdn.net/qq_37414463/article/details/105443896
Recomendado
Clasificación