數組:相同類型的數據 按照順序 組成的一種 引用數據類型 。java
數據類型:基本數據類型 + 引用數據類型;數組
引用數據類型:類 + 接口 + 數組 ;函數
一維數組:聲明,建立,初始化,元素的引用,長度code
變量聲明的語法格式: 變量類型 變量名;排序
數組聲明的語法格式:數據類型 [ ] 數組名;(數據類型 數組名[ ])索引
int[] myIntArray; //首選方法 (int myIntArray[];) //來源於C/C++,效果相同,但不是首選方法 String[] strArray;
語法格式一 先聲明後建立接口
數據類型[] 數組名;element
數組名 = new 數據類型[ 數組長度 ];字符串
int[] array; array = new int[10]; //建立一個長度爲 10 的整型數組array;
語法格式二 聲明的同時進行建立數組io
數據類型 [] 數組名 = new 數據類型 [ 數組長度 ]; dataType[] arrayRefVar = new dataType[arraySize]; // 1.使用 dataType[arraySize] 建立了一個數組; // 2.把新建立的數組的引用賦值給了變量 arrayRefVar。
int[] arr = new int[10]; //建立一個長度爲10的整型數組arr //注意:數組的長度必須給定
聲明數組的同時給數組賦值,叫作數組的初始化;
int[] arr = {1,2,3,4,5,6,7,8,9,10}; // 數組的長度就是初始化數組時所給數組元素的個數。
數組元素的訪問是經過索引訪問的。
語法格式: 數組名[ 下標 ];
注意:下標從0開始(數組索引從0開始,因此索引值從0到array.length - 1);
int[] arr = {0,1,2,3,4,5,6,7,8,9}; //屬性 length 表示數組的長度,例如:arr.length;
int 數組建立時數組元素默認值爲0;
double數組建立時數組元素默認爲0.0;
char 數組建立時數組元素默認爲 ;
String 數組建立時數組元素默認爲 null;
public class ArrayTest { public static void main(String[] args) { //聲明一個整型數組 int[] intArray; //聲明一個字符串類型的數組 String strArray[]; //建立數組 intArray = new int[5]; strArray = new String[10]; //聲明數組的同時進行建立數組 double[] doubleArray = new double[4]; //初始化數組 char[] chArray = {'a','b','c','d'}; char[] ch1Array = new char[5]; System.out.println("ch1Array 數組的長度爲:" + ch1Array.length); System.out.println("ch1Array 數組中的第2個元素爲:" + ch1Array[3]); System.out.println("chArray 數組的長度爲:" + chArray.length); System.out.println("chArray 數組中的第2個元素爲:" + chArray[1]); System.out.println("intArray 數組的長度爲:" + intArray.length); System.out.println("intArray 數組中的第二個元素爲:" + intArray[1]); System.out.println("strArray 數組的長度爲:" + strArray.length); System.out.println("strArray 數組中的第5個元素爲:" + strArray[4]); System.out.println("doubleArray 數組的長度爲:" + doubleArray.length); System.out.println("doubleArray 數組中的第4個元素爲:" + doubleArray[3]); System.out.println(); //循環爲整型數組賦值 for(int i = 0;i < 5;i++) { intArray[i] = i + 2; } //循環輸出整型數組中的元素 System.out.println("整型數組intArray 中的元素值分別爲:"); //數組下標越界(數組下標超出範圍)Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 // at com.ryanjie.ArrayTest.main(ArrayTest.java:51) // for(int i= 0;i < 6;i++) // { // System.out.print(intArray[i] + " "); // } // System.out.println(); for(int i = 0;i < 5;i++) { System.out.print(intArray[i] + " "); } System.out.println(); } } Output: ch1Array 數組的長度爲:5 ch1Array 數組中的第2個元素爲: chArray 數組的長度爲:4 chArray 數組中的第2個元素爲:b intArray 數組的長度爲:5 intArray 數組中的第二個元素爲:0 strArray 數組的長度爲:10 strArray 數組中的第5個元素爲:null doubleArray 數組的長度爲:4 doubleArray 數組中的第4個元素爲:0.0 整型數組intArray 中的元素值分別爲: 2 3 4 5 6
public class ArraysSum { public static void main(String[] args) { //求整型數組的累加和 //定義整型數組 int[] intArray = new int[5]; //從鍵盤開始接收數據,爲元素進行賦值 Scanner sc = new Scanner(System.in); for(int i = 0;i < intArray.length;i++) { System.out.println("請輸入第 " + (i + 1) + "個元素的值:"); intArray[i] = sc.nextInt(); } //輸出intArray 數組中的元素 System.out.println("數組中的元素分別爲:"); for(int i = 0;i < intArray.length; i++ ) { System.out.print(intArray[i] + " "); } System.out.println(); //輸出intArray數組中的元素的和 int sum = 0; for(int i= 0; i < intArray.length;i++) { sum += intArray[i]; } System.out.println("intArray數組的元素和爲:" + sum); } } Output: 請輸入第 1個元素的值: 100 請輸入第 2個元素的值: 100 請輸入第 3個元素的值: 50 請輸入第 4個元素的值: 50 請輸入第 5個元素的值: 150 數組中的元素分別爲: 100 100 50 50 150 intArray數組的元素和爲:450
public class MaxElement { public static void main(String[] args) { //求數組中的最大值 //定義整型數組 //int[] intArray = {34,23,78,56,31,66}; int[] intArray = new int[6]; //從鍵盤讀取數組元素值 Scanner sc = new Scanner(System.in); for(int i = 0;i < intArray.length;i++ ) { System.out.println("請輸入第 " + (i+1) + "個元素的值:"); intArray[i] = sc.nextInt(); } //輸出intArray數組中的元素 System.out.println("intArray 數組中的元素分別爲:"); for(int i = 0;i < intArray.length;i++) { System.out.print(intArray[i] + " "); } System.out.println(); int max = intArray[0]; for(int i = 1;i < intArray.length;i++) { if(max < intArray[i]) { max = intArray[i]; } } System.out.println("intArray 數組元素的最大值爲:" + max); } } Output: 請輸入第 1個元素的值: 34 請輸入第 2個元素的值: 23 請輸入第 3個元素的值: 78 請輸入第 4個元素的值: 56 請輸入第 5個元素的值: 31 請輸入第 6個元素的值: 66 intArray 數組中的元素分別爲: 34 23 78 56 31 66 intArray 數組元素的最大值爲:78
foreach 循環又稱爲加強型循環,它能在不使用下標的狀況下遍歷數組。
int[] arr = {1,2,3,4,5,6}; for(int n:arr) System.out.print(n + " "); //每次把數組中的元素存放到n中,輸出。循環遍歷一遍就終止;
public class Test { public static void main(String[] args) { //定義整型數組 //int[] intArray = {34,23,78,56,31,66}; int[] intArray = new int[6]; //從鍵盤讀取數組元素值 Scanner sc = new Scanner(System.in); for(int i = 0;i < intArray.length;i++ ) { System.out.println("請輸入第 " + (i+1) + "個元素的值:"); intArray[i] = sc.nextInt(); } //foreach循環 for(int n:intArray) { System.out.print(n + " "); } System.out.println(); } }
數組做爲參數傳遞給方法。
調用printfDoubleArray方法打印doubleArray數組:
public static void printfDoubleArray(double[] doubleArray) { for (double element: doubleArray ) { System.out.println(doubleArray[i] + " "); } } //調用printfDoubleArray方法打印doubleArray數組 printfDoubleArray(new double[] {3.14,6.66,8,88,3.59,7.84});
數組能夠做爲函數的返回值。
將list數組中的元素值賦值給result數組:
public atstic int[] reverse(int[] list){ //聲明 result 數組 並建立 result 數組 int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
public class BubbleSort { public static void main(String[] args) { //冒泡排序BubbleSort int[] intArray = {34,23,78,56,31,66}; System.out.println("排序前的數組元素分別爲:"); for(int element:intArray) { System.out.print(element + " "); } System.out.println(); //BubbleSort int temp; for (int i = 0; i < intArray.length; i++) { for (int j = 0; j < intArray.length-i-1; j++) { if(intArray[j] > intArray[j+1]) { temp = intArray[j]; intArray[j] = intArray[j+1]; intArray[j+1] = temp; } } } //輸出排序後的數組 System.out.println("排序後的數組元素分別爲:"); for(int element:intArray) { System.out.print(element + " "); } System.out.println(); } } OutPut: 排序前的數組元素分別爲: 34 23 78 56 31 66 排序後的數組元素分別爲: 23 31 34 56 66 78