數組的定義
數組是一組相同數據類型的數據的集合,數組中的每一個數據被稱作元素。在數組中可以存放任意類型的元素,但是同一個數組裏存放的元素類型必須一致,每一個數組元素可以通過一個下標來訪問。
定義數組的格式:
數組類型[] 數組名 = new 數組類型[數組容量];
數組類型[] 數組名 = new 數組類型[]{數組元素};
數組類型[] 數組名 = {數組元素};
數組名就是定義的變量名,要符合標識符的規範;數組容量表示該數組中可以容納的數組元素的個數。
數組中的每一個元素都有一個索引,也叫角標,要想訪問數組中的元素可以通過"數組名[角標]"的形式
需要注意的是,數組中最小的索引是0,最大的索引是"數組的長度-1"。爲了獲得數組的長度,提供
一個 length 屬性。通過"數組名.length"的方式,來獲取元素的個數,即數組的長度。
Java不同數據類型元素的默認值
數據類型 | 默認初始化值 |
---|---|
byte,short,int,long | 0 |
float,double | 0.0 |
char | 一個空字符,即’\u0000’ |
boolean | false |
引用數據類型 | null |
使用數組時,如果不想使用這些默認初始值,可以顯式的爲這些元素賦值,也可以對定義數組時指定初始值進行修改。
package com.wang.array;
public class ArrayDemo1 {
public static void main(String[] args) {
//數據類型[] 數組名 = new 數據類型[數組容量];
int[] nums = new int[10]; //聲明一個數組
//給數組元素賦值
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
nums[5] = 6;
nums[6] = 7;
nums[7] = 8;
nums[8] = 9;
nums[9] = 10;
//計算數組中所有元素的和
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum = sum + nums[i];
}
//輸出結果
System.out.println("數組中元素的總和是:" + sum);//55
}
}
數組的內存分析
爲了便於理解,簡單的將內存分爲棧內存,堆內存等,基本數據類型的變量都存儲在棧內存中,棧的特點是存儲空間小,但是存取速度快,先進後出。引用數據類型所佔的空間比較大,存儲在堆內存中,堆內存的特點是空間大,存取的速度比較慢。
數組的內存分析
數組的特點
- 數組的長度是確定的。數組一旦被創建,它的大小就是不可改變的。
- 數組中的元素必須是相同類型的,不允許出現混合類型。
- 數組中的元素可以是任何數據類型,包括基本數據類型和引用數據類型。
- 數組變量屬於引用數據類型,數組也可以看成是對象,數組中的每一個元素相當於該對象的成員變量。
數組邊界:
數組下標的合法區間:[0 ~ length-1],如果數組下標越界就會報錯。
ArrayIndexOutOfBoundsException
數組下標越界異常
數組的使用
- 操作數組時,需要依次訪問數組中的每一個元素,這種操作稱爲數組的遍歷。
package com.wang.array;
public class ArrayDemo2 {
public static void main(String[] args) {
//創建一個數組
int[] arrays = {1,2,3,4,5};
//遍歷數組元素
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
System.out.println("=============");
//計算數組中元素的和
int sum = 0;
for (int i = 0; i < arrays.length; i++) {
sum += arrays[i];
}
System.out.println("數組中元素的和爲:" + sum);
}
}
- 找出最大值
package com.wang.array;
public class ArrayDemo3 {
public static void main(String[] args) {
//創建一個數組
int[] arrays = {1,2,3,4,5};
//找出數組中的最大值
int max = arrays[0];//首先假設數組下標爲0的元素最大,再去循環比較
for (int i = 1; i < arrays.length; i++) {
if (arrays[i] > max) {
max = arrays[i];
}
}
System.out.println("數組中的最大值是:" + max);
}
}
- 數組中的增強for循環
增強for循環的格式:
for(聲明語句 : 表達式)
{
//代碼
}
增強for循環是Java1.5之後引入的
聲明語句:聲明新的局部變量,該變量的類型必須和數組元素的類型匹配,作用域限定在循環語句塊,
其值與此時數組元素的值相等。
表達式:表達式是要訪問的數組名,或者是返回值爲數組的方法。
package com.wang.array;
public class ArrayDemo4 {
public static void main(String[] args) {
int[] arrays = {10,20,30,40,50};
//增強for循環,JDK1.5,適用於不對數組下標操作,僅僅是遍歷數組
//這種方式是取不到數組下標的
for (int array : arrays) {
System.out.println(array);
}
}
}
- 數組作爲方法
package com.wang.array;
public class ArrayDemo5 {
public static void main(String[] args) {
int[] arrays = {10,20,30,40,50};
printArray(arrays);
}
//打印數組元素
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}