(1)數組:存儲同一種數據類型的多個元素的容器(注意和集合的區別 后面的總結之中有)。
(2)特點:每一個元素都有編號,從0開始,最大編號是長度-1。編號的專業叫法:索引。
(3)定義格式
A:數據類型[] 數組名;
B:數據類型 數組名[];
(4)數組的初始化
A:動態初始化
只給長度,系統給出默認值。
舉例:int[] arr = new int[3];
B:靜態初始化
給出值,系統決定長度。
舉例:int[] arr = new int[]{1,2,3};
簡化版:int[] arr = {1,2,3};
(5)JAVA的內存分配
A:棧 存儲局部變量。
B:堆 存儲所有new出來的。
C:方法區(后面面試題會詳細講,先大概了解)。
D:本地方法區(系統相關)。
E:寄存器(CPU使用)。
注意:
a:局部變量 在方法定義中或者方法聲明上定義的變量。
b:棧內存和堆內存的區別。
棧:數據使用完畢,就消失。
堆:每一個new出來的東西都有地址,每一個變量都有默認值。
byte,short,int,long 0。
float,double 0.0。
char 'u0000'。
boolean false。
引用類型 null。
數據使用完畢后,在垃圾回收器空閑的時候回收。
(6)數組內存圖:
(7)數組的常見操作
A:遍歷。
B:最值。
(8)代碼:
/* 數組:存儲同一種數據類型的多個元素的容器。 定義格式: A:數據類型[] 數組名; B:數據類型 數組名[]; 舉例: A:int[] a; 定義一個int類型的數組a變量 B:int a[]; 定義一個int類型的a數組變量 如何對數組進行初始化呢? A:何謂初始化呢? 就是為數組開辟內存空間,并為每個數組元素賦予值 B:有幾種方式呢? a:動態初始化 只指定長度,由系統給出初始化值 b:靜態初始化 給出初始化值,由系統決定長度 動態初始化的格式: 數據類型[] 數組名 = new 數據類型[數組長度]; 舉例: int[] arr = new int[3]; 如何獲取數組中的元素呢? 通過: 數組名[索引] 索引其實就是每個元素的編號,從0開始,最大索引是數組的長度-1。 */ public class ArrayDemo1 { public static void main(String[] args) { //定義一個數組 動態初始化 int[] arr = new int[3]; //定義一個數組 靜態初始化 int[] arr2 = {1,2,3}; /* 左邊: int:說明數組中的元素的數據類型是int類型 []:說明這是一個數組 arr:是數組的名稱 右邊: new:為數組分配內存空間。 int:說明數組中的元素的數據類型是int類型 []:說明這是一個數組 3:數組長度,其實也就是數組中元素的個數 */ System.out.println(arr); //[I@c3c749 地址值。 System.out.println(arr[0]);//0 System.out.println(arr[1]);//0 System.out.println(arr[2]);//0 System.out.println("====================="); System.out.println(arr);//[I@c3c749 System.out.println(arr2[0]);//1 System.out.println(arr2[1]);//2 System.out.println(arr2[2]);//3 } }
/* 數組遍歷:就是依次輸出數組中的每一個元素。 注意:數組提供了一個屬性length,用于獲取數組的長度。 格式:數組名.length */ public class ArrayDemo2 { public static void main(String[] args) { // 定義數組 int[] arr = { 11, 22, 33, 44, 55 }; // 獲取每一個元素 // 如何獲取呢?我們知道數組名結合編號(索引)就可以找到數據 System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); System.out.println("--------------------"); // 雖然這種做法可以,但是不是我想要的 // 代碼的重復度很高 // 輸出語句,數組名都是相同的,僅僅是索引是變化的 // 用循環搞定索引值 for (int x = 0; x < 5; x++) { // x=0,1,2,3,4 System.out.println(arr[x]); } System.out.println("--------------------"); //為什么到5呢,我們是數了一下數組的個數 // 繼續看下個數組如何遍歷 我們還是數嗎? int[] arr2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 2, 3, 4, 5, 7, 8, 5, 3, 5, 6, 8, 7, 8, 5, 3, 5, 6, 8, 7, 8, 5, 3, 5, 6, 8, 7, 8, 5, 3, 5, 6, 8, 7, 8, 5, 3, 5, 6, 8 }; // 這個時候,數組就給我們提供了一個屬性:length專門用于獲取數組的長度 // 格式:數組名.length 返回數組的長度 System.out.println(arr.length);//5 System.out.println(arr2.length);//51 System.out.println("--------------------"); // 改進第一個程序 for (int x = 0; x < arr.length; x++) { System.out.println(arr[x]); } } }
/* 數組獲取最值(獲取數組中的最大值最小值) 分析: A:定義一個數組,并對數組的元素進行靜態初始化。 B:從數組中任意的找一個元素作為參照物(一般取第一個),默認它就是最大值。 C:然后遍歷其他的元素,依次獲取和參照物進行比較,如果大就留下來,如果小,就離開。 D:最后參照物里面保存的就是最大值。 */ public class ArrayDemo3 { public static void main(String[] args) { //定義一個數組 int[] arr = {34,98,10,25,67}; //調用方法 int max = getMax(arr); System.out.println("max:"+max); //請獲取數組中的最小值 int min = getMin(arr); System.out.println("min:"+min); } public static int getMax(int[] arr) { //從數組中任意的找一個元素作為參照物 int max = arr[0]; //然后遍歷其他的元素 for(int x=1; x<arr.length; x++) { //依次獲取和參照物進行比較,如果大就留下來,如果小,就離開。 if(arr[x] > max) { max = arr[x]; } } //最后參照物里面保存的就是最大值。 return max; } public static int getMin(int[] arr) { //從數組中任意的找一個元素作為參照物 int min = arr[0]; //然后遍歷其他的元素 for(int x=1; x<arr.length; x++) { //依次獲取和參照物進行比較,如果小就留下來,如果大,就離開。 if(arr[x] < min) { min = arr[x]; } } //最后參照物里面保存的就是最小值。 return min; } }