Implicit loading: When a Java application is started, the JVM automatically loads certain system classes such as java.lang.Object and java.lang.String.
Explicit loading: specify the class to be loaded using the loadClass() method of the ClassLoader class or the forName() method of the Class class.
Dynamic loading: Using a class loader to dynamically load a class, for example, loading a specific class as needed during program execution.
Extend Loading: By placing class files in the JRE/lib/ext directory, you can expand the search path of the class loader so that the JVM can load these classes.
Custom Loading: Developers have the ability to customize a class loader in order to implement specific loading logic, such as loading classes from the network or database.