(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;
}
}






