Class.forName("X") helps us to load class dynamically(at runtime) using its fully qualified name (package.classname) and JVM executes all its static block after class loading.
Note: It does not return the instance of Class.
forName() uses the classloader to invoke the class.
If a class already loaded in JVM, Class.forName() does not load that class i.e. JVM keeps track of all the classes that have been previously loaded.
JDBC Driver Is a Good Example
We generally uses it load the JDBC Drivers.
If class successfully loaded, the static initializer is called.