java基础小结一
java 基础总结一
一、java虚拟机(JVM)
1、关于ClassLoader类
java程序不是一个可执行文件,它有许多独立的类文件组成,每一个类文件对应一个java类。ClassLoader包括bootstrap classloader(启动类加载器),它在JVM运行的时候加载java核心的API。这个API中就包括用户定义的ClassLoader,用户定义是指通过java程序实现的ClassLoader:一个是ExtClassLoader,一个是AppClassLoader。前一个的作用是用来加载lib/ext目录下的类,后一个的作用是用来加载用户机器上ClASSPATH设置目录中的class。
2、ClassLoader类中的一些方法
(1)、public Class<?> loadClass(String name boolean resolve)throws ClassNotFoundException
使用指定的二进制名称来加载类
(2)、
将一个 byte 数组转换为 class类的实例。必须分析 Class,然后才能使用它。 (3)、protected final Class<?> findSystemClass(String name) 该方法从本地文件系统装入文件。 (4)、 (5)、 (6)、 (7)、 在运行时启动序列的早期首先调用此方法,这时会创建系统类加载器并将其设置为调用 Thread 的上下文类加载器。 默认的系统类加载器是此类的一个与实现有关的实例。 (8)、Class.forName()方法forName方法是一个静态的方法,用来加载class。 2、java中assert在什么时候会被用到? assert可以在预计正常情况下不会到达的任何位置上放置断言。 断言可以用于验证传递给私有方法的参数,不应该用于验证传递给公有方法的参数。 也可以在非公有方法中利用断言测试后置条件。 断言不应该以任何方式改变程序的状态。 protected final Class<?> defineClass(String name,
byte[] b,
int off,
int len)
throws ClassFormatError
throws ClassNotFoundExceptionprotected final void resolveClass(Class<?> c)
protected final Class<?> findLoadedClass(String name)
protected Class<?> findClass(String name)
throws ClassNotFoundException
loadClass
方法调用。默认实现抛出一个 ClassNotFoundException。 public static ClassLoader getSystemClassLoader()