在看String類的源碼時,發現String類裏的toCharArray()方法中有一段註釋以下:blog
經多方查找資料後,現解釋以下:內存
雖然String 和Arrays 都屬於rt.jar中的類,可是BootstrapClassloader 在加載這兩個類的順序是不一樣的。因此當String.class被加載進內存的時候,Arrays此時沒有被加載,因此直接使用確定會拋異常。而System.arrayCopy是使用native代碼,則不會有這個問題。ssl
另外有同窗說把代碼換掉之後也能運行, 那是由於換掉代碼的時候 JVM已經加載完了全部的系統類, 因此纔會看到也能正常運行。源碼