Class.forName the class. class file is loaded into the JVM, and then the class is parsed, executing the class's static block and assigning values to the STAIC variable. ClassLoader simply loads the. class file into the JVM and does not execute the static block until the Newinstance () is performed.
public Class A {
{
System.out.println ("a initialization block");
}
static{
System.out.println ("A static Block");
private static Integer Integer=getinteger ();
Public A () {
System.out.println ("a constructor");
}
public static Integer Getinteger () {
System.out.println ("A initialization static variable");
return 10000;
}
public void Geta () {
System.out.println ("a normal function");
}
public Class B extends a{
{
System.out.println ("B initialization Block");
static{
System.out.println ("B static Block");
}
private static Integer Integer=getinteger ();
Public B () {
System.out.println ("B constructor");
}
public static Integer Getinteger () {
System.out.println ("B initialization static variable");
return 10000;
}
public void Getb () {
System.out.println ("normal function of B");
}
Import Java.io.BufferedReader;
Import Java.io.InputStreamReader;
public class Test {public
static void main (String []ags) throws exception{
A a=new B ();
}
}
Output results: