Prefacio
Hoy, al ver la implementación de Android ContentProvider, de repente pensé en la orden de ejecución de dominios estáticos, bloques estáticos, bloques no estráticos, bloques no estráticos y funciones constructivas durante el nuevo proceso de la clase Java. De hecho, este es un problema muy clásico, que se examina muy para comprender el conocimiento básico de Java. Creo que también hay tales problemas durante el proceso de entrevista, y aproveche el tiempo para revisarlo el fin de semana.
en conclusión
Aquí está la conclusión de clasificación para todos, y luego escribo un programa para verificar nuestras conclusiones. Durante la clase Java es nueva, la orden de ejecución es la siguiente:
En el proceso de implementación de la clase de herencia, la orden de ejecución de inicialización es la siguiente:
Aquí debe introducir bloques de código estáticos y bloques de código no estráticos.
1. Bloque de código estático:
estático {
}
2. Bloque de código no estático
{{
}
Las similitudes y diferencias entre los bloques de código estático y los bloques de código no estáticos son las siguientes:
La mejor verificación de la verificación de la conclusión es escribir el código para probar los resultados. Primero, echemos un vistazo al orden de ejecución cuando la clase de herencia se inicializa.
Public Class InitoderTest {Public Static Stration static_field = "Propiedades estáticas"; -Static Properties "; // Bloques no estatales {System.out.println (campo); System.out.println (" Bloque de código no estático ");} public initodertest () {System.out.println);} Public static void main (string [] args) {initodrtest test = new initoderTest ();}} Resultados de la ejecución:
A continuación, verifiquemos que cuando se hereda la clase Java, la orden de ejecución está en línea con nuestras conclusiones. El código de prueba es el siguiente:
Clase ParentTest {String static static_static_field = "Propiedades entre parentesco"; String Parentfield = "Family Class-No-Static Attributes"; PareatTTTest () {System.out.println ("Family -Public Class InitoderTest extiende PareatTTest {public Stration static_field =" atributo estático "; // static block static {system.out .println (static_field); system.out.println (" Bloque de código estático ");} public String Field =" Propiedades no -estatales "; // bloque no -estático {system.out.println (campo); system.out.pr. Intln (" bloque de código no estático ") ;} Public initoderTest () {System.out.println ("Portomless Constructor");Los resultados de la ejecución son los siguientes: