-
數組時相同類型數據的有序集合
-
數組描述的時相同類型的若干數據,按照一個定的先后次序排列組合而成
-
其中,每一個數據成為數組元素,每個數組元素可以通過一個下標來訪問他們
數組的聲明&創建
-
首先必須聲明數組變量,才能在程序中使用數組。 聲明數組變量的語法:
dataRype[] arrayRefVar; // 首先的方法(java)
或者
dataType arrayRefVar[];// 效果相同,但不是首先方法
-
java語言使用new操作符來創建數組。
dataType[] arrayRefVar = new dataType[arraySize] ;
-
數組的元素是通過索引訪問的,數組索引從0開始。
-
獲取數組的元素:array.length
-
public static void main(String[] args) {
// 建立數組的基本步驟:
// 1. 聲明一個數組
int[] nums;
// 2. 創建一個數組(開辟空間)
nums = new int[10];
// 3. 給數組中的元素賦值
for (int i = 0; i < nums.length; i++) {
nums[i] = i+1 ;
}
for (int x : nums) {
System.out.println(x);
}
}
內存分析
java內存:1 堆,2 棧,3 方法區
-
堆:可以存放new的對象和數組。(可以被所有的線程共享,不會存放別的對象引用)
-
棧:存放基本變量類型(包含這個基本變量類型的具體數值);引用對象的變量(會存放這個引用在堆里面的具體地址)
-
方法區:可以被所有的線程共享,包含了所有的class和static變量
由於數組的邊界時,時確定的,在超出時,會報錯:java.lang.ArrayIndexOutOfBoundsException。
數組的初始化
-
靜態初始化:
int[] a ={1,2,3};
Man[] mans ={new Man(1,1),new Man(2,2)}
-
動態初始化:
int[] a = new int[2];
a[0]=1;
a[1]=2;
-
數組的初始化:
-
數組時引用類型,它的元素相當於類的實例變量,因此數組一經分配空間,其中的元素同樣被按照實例的變量同樣的方式被隱形初始化。
-
數組的基本特點
-
數組的長度是確定的。數組一旦被創建,他的大小就不可以改變的。
-
其元素必須是相同類型,不允許出現混合類型。
-
數組中的元素可以是任何數據類型的,包括基本類型和引用類型。
-
數組變量屬於引用類型,數組也可以看成對象,數組中的每個元素都相當於該對象的成員變量 數組本身就是對象,java中對象實在堆中的,因此數組無論保存原始類型還是其他對象類型,數組對象本身在堆中的。
數組的邊界
-
下標的合法區間:[0,length-1],如果越界就會報錯。
-
java.lang.ArrayIndexOutOfBoundsException。
數組小結
-
數組時相同數據類型(任意類型)的有序集合
-
數組也是對象,數組的元素相當於對象的成員變量
-
數組的長度是確定的。越界就會報錯。
數組的使用
-
普通的for循環
-
for-each循環(增強型for循環)
-
數組作方法入參
-
數組做返回值
public class ArrayDemo04 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
// 增強for循環,適合打印輸出
for (int x : array) {
System.out.println(x);
}
System.out.println("===========");
printArray(array);
System.out.println();
System.out.println("$$$$$$$$$$$$");
int[] reverse = arrayReverse(array);
System.out.println("輸入的反轉數組如下:");
printArray(reverse);
}
//打印數組
public static void printArray (int[] array){
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+"\t");
}
System.out.println();
System.out.println("*****************");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
//反轉數組(返回值為數組)
public static int[] arrayReverse (int[] array){
int[] result= new int[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[array.length-1-i];
}
return result;
}
}