1、定義:相同數據類型的數據的組合。 不使用數組的定義方式: 使用一維數組的定義方式: 1、靜態初始化:在聲明並初始化數組與給數組相應的元素賦值操作同時進行; int[] scores = new int[]{72,90,59}; 2、動態初始化:在聲明並初始化數組與給數組相應的元素賦值操作分開進行 ...
1、定義:相同數據類型的數據的組合。
不使用數組的定義方式:
int i1 = 1; int i2 = 2; int i3 = 3;
使用一維數組的定義方式:
1、靜態初始化:在聲明並初始化數組與給數組相應的元素賦值操作同時進行;
int[] scores = new int[]{72,90,59};
2、動態初始化:在聲明並初始化數組與給數組相應的元素賦值操作分開進行;
1 int[] scores1 = new int[3]; 2 3 socres1[0] = 72; 4 5 socres1[1] = 90; 6 7 socres1[2] = 59;
2、數組的初始化問題(以下的初始化為錯誤的初始化方式):
1 String[] names = new String[5]{"AA","BB","CC"} 2 3 int i = new int[10]; 4 5 int i = new int[];
註意:不管是動態初始化還是靜態初始化,一定要在創建的時候就指明數組的長度;
3、數組的引用:
1、通過數組下角標的方式來進行引用;下角標從0開始到n-1結束,其中n為數組的長度。
scores[0] = 87; scores[1] = 89; scores[3] = 98;
2、數組的長度通過length屬性來調用;
System.out.println(names.length);
System.out.println(scores.length);
3、如何遍曆數組:使用迴圈來進行遍歷;
for(int i = 0,i < scores1.length;i++){ System.out.println(scores1[i]); }
代碼展示:
1 public class TestArray { 2 public static void main(String[] args){ 3 int i1; 4 i1 = 12; 5 boolean b = true; 6 //1.如何定義一個數組 7 //1.1數組的聲明 8 String[] names; 9 int[] scores; 10 //1.2初始化 11 //第一種:靜態初始化:初始化數組與給數組元素賦值同時進行。 12 names = new String[]{"張三","李四","王五"}; 13 //第二種:動態初始化:初始化數組與給數組元素賦值是分開進行的; 14 scores = new int[4]; 15 //2.如何調用相應的數組元素:通過數組元素的下角標的方式來調用。 16 //下角標從0開始,到n-1結束。其中N表示的是數組的長度。 17 scores[0] = 87; 18 scores[1] = 89; 19 scores[3] = 98; 20 //3。數組的長度:通過數組的length屬性。 21 System.out.println(names.length); 22 System.out.println(scores.length); 23 //4.如何遍曆數組元素 24 // System.out.println(names[0]); 25 // System.out.println(names[1]); 26 // System.out.println(names[2]); 27 for(int i = 0;i < names.length;i++){ 28 System.out.println(names[i]); 29 } 30 } 31 }
二維數組:
1 //1.二維數組的初始化 2 scores2 = new int[][]{{1,2,3},{3,4,5},{6}};//靜態初始化 3 names = new String[6][5];//動態初始化的方式一 4 names = new String[6][];//動態初始化的方式二 5 names[0] = new String[5]; 6 names[1] = new String[4]; 7 names[2] = new String[7]; 8 names[3] = new String[5]; 9 names[4] = new String[8]; 10 names[5] = new String[5];
2、如何引用二維數組的元素:
1 //2.如何來引用具體的某一個元素 2 int[][] i = new int[3][2];//int[] i[] = new int[3][2]; 3 i[1][0] = 90; 4 i[2][1] = 100;
3、二維數組的長度
1 //二維數組的長度:length屬性 2 System.out.println(i.length); 3 //二維數組中元素的長度 4 System.out.println(i[0].length); 5 System.out.println(names.length); 6 System.out.println(names[4].length);
4、遍歷二維數組
1 for(int m = 0; m < scores2.length; m++){//控制行數 2 for(int n = 0; n < scores2[m].length; n++){ 3 System.out.print(scores2[m][n] + "\t"); 4 } 5 System.out.println(); 6 }
5、關於數組元素的預設初始化值
1、byte short int long 而言:0;
2、float double 而言:0.0;
3、char而言:空格
4、boolean而言:false
5、引用類型變數而言:null
1 public class TestArray { 2 public static void main(String[] args){ 3 4 //對於基於基本數據類型的變數創建的數組:byte short int long float double char boolean 5 //1.對於byte short int long而言,創建數組以後,預設值為0; 6 int[] scores = new int[4]; 7 scores[0] = 89; 8 scores[3] = 90; 9 for(int i = 0; i < scores.length; i++){ 10 System.out.println(scores[i]); 11 } 12 13 byte[] scores1 = new byte[4]; 14 scores1[0] = 89; 15 scores1[3] = 90; 16 for(int i = 0; i < scores1.length; i++){ 17 System.out.println(scores[i]); 18 } 19 //2.對於float double而言,預設值為0.0; 20 float[] f = new float[3]; 21 f[0] = 1.2F; 22 for(int i = 0; i < f.length; i++){ 23 System.out.println(f[i]); 24 } 25 System.out.println("我是分割線~~~~~~~~~~"); 26 //3.對於char而言,預設值為空格 27 char[] c = new char[3]; 28 for(int i = 0; i < c.length; i++){ 29 System.out.println(c[i]); 30 } 31 System.out.println("我是分割線~~~~~~~~~~"); 32 33 //4.對於boolean而言,預設為false 34 boolean[] b = new boolean[3]; 35 for(int i = 0; i < b.length; i++){ 36 System.out.println(b[i]); 37 } 38 //5.對於引用類型的變數構成的數組而言,預設初始化值為null,以String為例 39 String[] strs = new String[4]; 40 strs[0] = "AA"; 41 strs[1] = "BB"; 42 //strs[2] = "CC"; 43 strs[3] = "DD"; 44 //遍曆數組元素 45 for(int i = 0; i < strs.length; i++){ 46 System.out.println(strs[i]); 47 } 48 49 System.out.println("我是分割線~~~~~~~~~~"); 50 Person[] pers = new Person[3]; 51 for(int i = 0; i < pers.length; i++){ 52 System.out.println(pers[i]); 53 } 54 //關於數組在記憶體中的結構 55 //其他的聲明方式: 56 int[] myInt = {12,13,14}; 57 int[] myInt1; 58 myInt1 = new int[]{12,13,14}; 59 } 60 }
6、二維數組的記憶體結構:
7、數組的常見異常:
1 public class TestException { 2 public static void main(String[] args){ 3 //1、數組下標越界的異常: java.lang.ArrayIndexOutOfBoundsException 4 int[] i = new int[10]; 5 //i[0] = 90; 6 //i[10] = 99; 7 8 //for(int m = 0; m <= i.length; m++){ 9 //System.out.println(i[m]); 10 //} 11 //2、空指針異常: java.lang.NullPointerException 12 // 第一種: 13 // boolean[] b = new boolean[3]; 14 // b = null; 15 // System.out.println(b[0]); 16 17 //第二種:java.lang.NullPointerException 18 // String[] str = new String[4]; 19 // //str[3] = new String("AA");//str[3] = "AA"; 20 // System.out.println(str[3].toString()); 21 //第三種:java.lang.NullPointerException 22 int[][] j = new int[3][]; 23 j[2][0] = 12; 24 25 } 26 }
8、數組常用的演算法問題(求數組元素的最大值、最小值、和、平均數、數組的賦值和反轉)
1 public class TestArray3 { 2 public static void main(String[] args) { 3 int[] arr = new int[] { 12, 43, 9, 0, -65, -99, 100, 9}; 4 //最大值 5 int max = arr[0]; 6 for(int i = 1; i < arr.length; i++){ 7 if(max < arr[i]){ 8 max = arr[i]; 9 } 10 } 11 System.out.println("數組的最大值為:" + max); 12 //最小值 13 int min = arr[0]; 14 for(int i = 1; i < arr.length; i++){ 15 if(min > arr[i]){ 16 min = arr[i]; 17 } 18 } 19 System.out.println("數組的最小值為:" + min); 20 //總和 21 int sum = 0; 22 for(int i = 0; i < arr.length; i++){ 23 sum += arr[i]; 24 } 25 System.out.println("總和為:" + sum); 26 //平均數 27 int avg = 0; 28 avg = sum / arr.length; 29 System.out.println("平均值為:" + avg); 30 31 //數組的複製 32 int[] arr1 = new int[arr.length]; 33 for(int i = 0; i < arr1.length; i++){ 34 arr1[i] = arr[i]; 35 } 36 //數組的反轉 37 for(int i = 0; i < arr.length/2; i++){ 38 int temp = arr[i]; 39 arr[i] = arr[arr.length-1-i]; 40 arr[arr.length - 1 - i] = temp; 41 } 42 //遍曆數組元素 43 for(int i = 1; i < arr.length; i++){ 44 System.out.print(arr[i] + "\t"); 45 } 46 } 47 }