They are not the same at all
Class.forName returns the Class object associated with the class of the given name.
In your example, you specify loadClass a String that represents the name of the class, instead of giving it the class itself.
This method allows you to specify a name, but there must be a binary name this class, not just the class name.
Any class name provided as a String parameter to methods in ClassLoader must be the binary name defined in the Java ™ Language Specification.
source share