在看String类的源码时,发现String类里的toCharArray()方法中有一段注释以下:blog
经多方查找资料后,现解释以下:内存
虽然String 和Arrays 都属于rt.jar中的类,可是BootstrapClassloader 在加载这两个类的顺序是不一样的。因此当String.class被加载进内存的时候,Arrays此时没有被加载,因此直接使用确定会抛异常。而System.arrayCopy是使用native代码,则不会有这个问题。ssl
另外有同窗说把代码换掉之后也能运行, 那是由于换掉代码的时候 JVM已经加载完了全部的系统类, 因此才会看到也能正常运行。源码