Java類加載器加載類順序
數(shù)組就是相同數(shù)據(jù)類型的元素按一定順序排列的集合,就是把有限個類型相同的變量用一個名字命名,然后用編號區(qū)分他們的變量的集合,這個名字成為數(shù)組名,編號成為下標。組成數(shù)組的各個變量成為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標變量。數(shù)組是在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。 ——這是百度對數(shù)組的定義
首先,數(shù)組的定義:
元素類型[] 數(shù)組名 = new 元素類型[] {元素1,元素2,........} 例如int[] arr = new int[5]
public static void main(String[] args) { //定義一個可以存放3個數(shù)組的容器,注意,數(shù)組的腳標從0開始 int[] arr = new int[3]; //位數(shù)組賦值 arr[0] = 1; arr[1] = 2; arr[2] = 3; System.out.println(arr[0]); } 也可以這樣寫 public static void main(String[] args) { int arr[] = {1,2,3}; System.out.println(arr[0]); } |
后者直接體現(xiàn)了數(shù)組的值和個數(shù)。數(shù)據(jù)明確的情況下可以前面中,不明確時用后者。
public static void main(String[] args) {
int arr[] = {1,2,3};
arr = null;
System.out.println(arr[1]);
}
用數(shù)組的常見錯誤:
public static void main(String[] args) { int arr[] = {1,2,3}; System.out.println(arr[3]); } //ArrayIndexOutOfBoundsException:數(shù)組越界;訪問數(shù)組時,訪問到數(shù)組中不存在的腳標。 public static void main(String[] args) { int arr[] = {1,2,3}; arr = null; System.out.println(arr[1]); } //NullPointerException:空指針;當引用沒有任何指向值為null的情況,該引用還在用于操作實體。 |
數(shù)組的操作
獲取數(shù)組中德數(shù)據(jù),通常會用到遍歷
用for循環(huán)遍歷數(shù)組
public static void main(String[] args) { int arr[] = { 1, 2, 3, 9, 5, 8, 6, 32, 52, 100 }; //arr.length方法獲取數(shù)組的長度 for (int i = 0; i < arr.length; i++) { System.err.println(arr[i]); } } |
java是一門解釋執(zhí)行的語言,由開發(fā)人員編寫好的java源文件先編譯成字節(jié)碼文件.class形式,然后由java虛擬機(JVM)解釋執(zhí)行,.class字節(jié)碼文件本身是平臺無關的,但是jvm卻不是,為了實現(xiàn)所謂的一次編譯,到處執(zhí)行,sun提供了各個平臺的JVM實現(xiàn)--也就是說jvm不是跨平臺的,編譯好的字節(jié)碼文件被放在不同的操作系統(tǒng)平臺上的jvm所解釋執(zhí)行,這個章節(jié)主要解釋一下JVM裝載類的機制
1.ClassLoader是什么?
一個類如果要被JVM所調(diào)度執(zhí)行,必須先把這個類加載到JVM內(nèi)存里,java.lang下有個很重要的類ClassLoader,這個類主要就是用來把指定名稱(指定路徑下)的類加載到JVM中
2.ClassLoader的分類
主要分4類,見下圖橙色部分
JVM類加載器:這個模式會加載JAVA_HOME/lib下的jar包
擴展類加載器:會加載JAVA_HOME/lib/ext下的jar包
系統(tǒng)類加載器:這個會去加載指定了classpath參數(shù)指定的jar文件
用戶自定義類加載器:sun提供的ClassLoader是可以被繼承的,允許用戶自己實現(xiàn)類加載器
類加載器的加載順序如圖所示: