En Java, cuando las declaraciones intentan y finalmente contienen declaraciones de retorno, ¿cuál es la situación de ejecución? ?
El primer caso: la prueba contiene la declaración de retorno y finalmente no la contiene.
Public Class Testtry {String String S = ""; {System.out.println ("intente ......");Aquí definimos una cadena S, asignamos "A" a S en Try, y lo devolvemos directamente, y asignamos "B" a S Finalmente. A continuación se presentan los resultados de la ejecución
intente ..... 17 b 8 a
Descubrimos que el resultado final es A, pero B se imprime con prioridad sobre a. A través de la depuración paso a paso de depuración, descubrimos que antes de ejecutar la devolución en Try, el código en finalmente se ejecutará, y luego se ejecutará la declaración de devolución. Si finalmente se incluye la declaración de devolución, ¿qué pasará?
El segundo caso: intente y finalmente contenga declaraciones de retorno.
Public Class Testtry {String String S = ""; {System.out.println ("intente ......");¿Qué tipo de resultados ocurrirán si S = "B"; ¿La cadena S A o B?
Prueba ..... 8 B
Descubrimos que el resultado final de la impresión es b.
Sabemos que la declaración de retorno se usa en un determinado método. , que se utiliza para finalizar el método en este momento.
Public static int () {int c = 1; (Excepción e) {E.PrintStackTrace (); c; /------- 2} // return c;El resultado de la ejecución del programa es:
correr:
Prueba la ejecución ...
Finalmente ejecutando ...
3
Construido con éxito (tiempo total: 0 segundos)
Tenga en cuenta que solo puede haber una declaración de retorno en las posiciones 2 y 3, y debe haber una declaración de devolución en 2, 3 y 4. Si 2 se ejecuta, el método finalizará y la declaración en 3 no se puede ejecutar.
Cuando el bloque de instrucción Prueba se ejecuta en 1, el valor de retorno de la función se almacenará en otra variable temporal (diferentes variables de C, su valor es 102). Se encuentra otro bloque de declaración en 2, y el valor de retorno se almacena en la variable temporal (el valor es 3).
Public static int () {int c = 1; -1} Finalmente {c ++;En el código anterior, no hay una declaración de retorno en el bloque de instrucción Finalmente.
Ejecutar: TryFinally102 construido con éxito (tiempo total: 0 segundos)
Conclusión: 1. Independientemente de si hay una declaración de devolución en el intento, la declaración finalmente definitivamente se ejecutará (finalmente es y el nombre es bueno).
2. Si no hay una declaración de devolución finalmente y hay una devolución en Try, luego antes de ejecutar la declaración de devolución en la prueba, el código en finalmente se ejecutará primero, y luego la declaración de retorno en prueba; Incluido en Finalmente, regresará directamente y ya no ejecutará la instrucción de retorno en la prueba.