java数组键_Java基础之数组
數(shù)組
數(shù)組就是用于存儲相同數(shù)據(jù)類型數(shù)據(jù)的一個容器。可以通過有規(guī)律的索引來訪問沒有規(guī)律的元素。
一維數(shù)組
定義格式:元素的數(shù)據(jù)類型[ ] 數(shù)組名稱 = new 元素的數(shù)據(jù)類型 [ 數(shù)組容器大小 ];
數(shù)組定義格式解釋:
元素:數(shù)組中的數(shù)據(jù),數(shù)組中的變量。
數(shù)據(jù)類型:數(shù)組中的數(shù)據(jù)的數(shù)據(jù)類型,用來聲明當(dāng)前數(shù)組中,可以存放什么類型的數(shù)據(jù)。
[ ]:表示是一個一維數(shù)組
數(shù)組名稱:數(shù)組本身也是一個變量,用于存儲數(shù)組的地址的變量。所以,數(shù)組名稱要符合標(biāo)識符規(guī)范。
=:賦值符號,將數(shù)組的地址,賦值給數(shù)組的名稱
new:新建,用于在堆內(nèi)存中開辟一塊空間,用來存儲數(shù)據(jù)
元素的數(shù)據(jù)類型:和前面的元素的數(shù)據(jù)類型保持一致
數(shù)組容器的大小:可以存儲數(shù)據(jù)的個數(shù),數(shù)組長度必須給出,用于確定在內(nèi)存中開辟多大的一塊空間。
數(shù)組初始化的格式:
1.元素的數(shù)據(jù)類型[] 數(shù)組名稱 = new 元素的數(shù)據(jù)類型[數(shù)組元素的個數(shù)];
2.在程序書寫的時候,就知道了數(shù)組中的元素是什么值,可以使用這一種
元素的數(shù)據(jù)類型[] 數(shù)組名稱 = new 元素的數(shù)據(jù)類型[] {元素值的羅列};
可以簡寫為:元素的數(shù)據(jù)類型[] 數(shù)組名稱 = {元素值的羅列};
數(shù)組的遍歷
遍歷:把所有元素都訪問一遍。
方式:通過循環(huán),訪問到數(shù)組中所有元素的索引。通過索引,訪問到對應(yīng)元素。
索引:角標(biāo)、下標(biāo)、腳標(biāo),表示某個元素在數(shù)組中的位置。范圍:0 ~ 數(shù)組長度-1。數(shù)組長度:數(shù)組元素的個數(shù),可以通過 數(shù)組名稱.length 獲取。
代碼:
public static void main(String[] args) {
//定義一個數(shù)組
int[] arr = {12, 23, 34, 45, 56};
//定義循環(huán),獲取到數(shù)組所有的索引,此時i不僅表示循環(huán)的控制,還表示數(shù)組的索引
for (int i = 0; i < arr.length; i++) {
//定義一個變量接收根據(jù)索引獲得到的數(shù)組中的值,并打印出來
int x = arr[i];
System.out.println(x);
}
}
練習(xí):
1、定義一個方法,遍歷一個一維數(shù)組。
思路:通過循環(huán),訪問到數(shù)組中所有元素的索引。通過索引,訪問到對應(yīng)元素。
2、定義一個方法,求一個一維數(shù)組中的最大值。
思路:設(shè)置一個變量?max,作用是先代表數(shù)組中的最大值,遍歷數(shù)組,讓每個元素都和該變量比較,如果比最大值變量還要大,那么就讓當(dāng)前元素替換掉最大值變量中的數(shù)據(jù)。
3、定義一個方法,將一個數(shù)組中的數(shù)據(jù)進(jìn)行反轉(zhuǎn)。
思路:第一個變成最后一個,第二個變?yōu)榈箶?shù)第二個。(0索引和arr.length-1索引位置對調(diào),1索引和arr.length-2索引位置對調(diào)....,直到數(shù)組的最中間的元素,停止對調(diào)。)
代碼:
public static void main(String[] args) {
//定義一個數(shù)組
int[] arr = {16,80,33,43,42,57,29};
//調(diào)用數(shù)組遍歷方法,將數(shù)組作為一個實(shí)參傳遞
method01(arr);
//調(diào)用數(shù)組數(shù)組獲取最大值的方法,將數(shù)組作為一個實(shí)參傳遞
method02(arr);
//調(diào)用數(shù)組數(shù)組反轉(zhuǎn)的方法,將數(shù)組作為一個實(shí)參傳遞
method03(arr);
}
//定義一個有參數(shù)的數(shù)組遍歷方法
public static void method01(int[] arr) {
//循環(huán)遍歷,獲取所有的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
//定義一個有參數(shù)的數(shù)組獲取最大值的方法
public static void method02(int[] arr) {
//先假設(shè)數(shù)組的0號索引對應(yīng)的值是最大值,將它復(fù)制給一個變量
int max = arr[0];
//循環(huán)遍歷進(jìn)行比較
for (int i = 1; i < arr.length; i++) {
//如果當(dāng)前元素大于假設(shè)的最大值
if (arr[i] > max) {
max = arr[i];//就讓當(dāng)前元素將假設(shè)的最大值替換掉
}
}
//循環(huán)結(jié)束之后,此時max就是數(shù)組中的最大值
System.out.println("數(shù)組最大值為:"+max);
}
//定義一個有參數(shù)的數(shù)組反轉(zhuǎn)的方法
public static void method03(int[] arr) {
//循環(huán)遍歷比較,可以在for循環(huán)定義兩個變量,一個索引從前向后,一個索引從后向前,
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
//i和j位置的元素,進(jìn)行交換
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
二維數(shù)組
二維數(shù)組:數(shù)組的每個元素,恰好又是一個數(shù)組。
定義方式:
int[][] arr = new int[3][];
解釋:定義一個二維數(shù)組,名字arr,數(shù)組中每個元素還是一個數(shù)組,但是元素對應(yīng)的數(shù)組,沒有被創(chuàng)建的,arr[0] ?= null。
注意:二維數(shù)組的長度,一定要給出的,[3]代表二維數(shù)組長度
int[][] arr2 = {{},{4},{5,6,7}};
解釋:arr2是一個二維數(shù)組,里面有3個元素,對應(yīng)三個數(shù)組,分別是{},{4},{5,6,7}
注意:int [ ] [ ] arr = new int [0] [0];
這樣定義回拋出異常,因?yàn)閍rr[0]索引上的元素為{},是一個沒有任何元素的數(shù)組,獲取沒有元素的數(shù)組的指定索引,會拋出數(shù)組索引越界異常 ArrayIndexOutOfBoundsException。
數(shù)組的注意事項
1.在對數(shù)組進(jìn)行操作時,先控制其值不為null,然后再判斷數(shù)組的長度,以免發(fā)生空指針異常。如果 int [ ] a = null,那么針對于數(shù)組的所有操作,都將拋出空指針異常。
2.其實(shí),如果不判斷數(shù)組的長度不為0,就進(jìn)行數(shù)組的循環(huán)遍歷,for循環(huán)是可以控制住不報錯的,但是最好將判斷數(shù)組長度不為0寫上,這樣比較嚴(yán)謹(jǐn)。
3.int [ ] a = null;在內(nèi)存中不開辟空間。int [ ] a = { };在內(nèi)存中開辟空間,只不過數(shù)組中沒有元素。
二維數(shù)組遍歷代碼:
public static void main(String[] args) {
//定義一個二維數(shù)組
int[][] arr2 = { {}, { 4 }, { 5, 6, 7 } };
// 首先,先判斷二維數(shù)組不能為null并且數(shù)組的長度不為0
if (arr2 != null && arr2.length != 0) {
//利用for循環(huán),遍歷二維數(shù)組的每一個元素
for (int i = 0; i < arr2.length; i++) {
//二維數(shù)組的每一個元素又是一個數(shù)組,所以還需要判斷數(shù)組不能為null并且數(shù)組的長度不為0
if (arr2[i] != null && arr2[i].length != 0) {
//利用for循環(huán),遍歷二維數(shù)組的每一個一維數(shù)組中的元素
for (int j = 0; j < arr2[i].length; j++) {
int z = arr2[i][j];
//在一行輸出每個一維數(shù)組中的元素,用,分隔
System.out.print(z+",");
}
//每輸出完一個一維數(shù)組,換行
System.out.println();
} else {
System.out.println("一維數(shù)組不能為null并且數(shù)組長度不能為0");
}
}
}else {
System.out.println("二維數(shù)組不能為null并且數(shù)組長度不能為0");
}
}
練習(xí):
分析以下需求,并用代碼實(shí)現(xiàn):
(1)定義一個int類型的一維數(shù)組,內(nèi)容為{6,2,9,15,1,5,20,7,18}
(2)將數(shù)組最大元素與最后一位元素進(jìn)行交換,最小元素與第一位元素進(jìn)行交換,并打印數(shù)組,最后效果{1,2,9,15,6,5,18,7,20}
提示思路:先查找最大值和最小值出現(xiàn)的索引。
代碼實(shí)現(xiàn):
public static void main(String[] args) {
int[] arr = {6,2,9,15,1,5,20,7,18};//{1,2,9,15,6,5,18,7,20}
//判斷數(shù)組不能為null并且數(shù)組長度不能為0
if(arr != null&&arr.length != 0){
//判斷數(shù)組中的元素個數(shù)是否為1,如果只有一個數(shù),直接輸出
if(arr.length == 1){
System.out.println(arr[0]);
//判斷數(shù)組中元素個數(shù)是否為2,如果有兩個,判斷大小,最后輸出結(jié)果
}else if(arr.length == 2){
if(arr[0]>arr[1]){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
for(int i = 0;i
System.out.print(arr[i]+",");
}
//判斷數(shù)組中的數(shù)據(jù)個數(shù)是否為2個以上
}else if(arr.length > 2){
//定義幾個變量假設(shè)是最小值,最大值,最小值的索引,最大值的索引
int min = arr[0];
int max = arr[arr.length-1];
int minIndex = 0;
int maxIndex = arr.length-1;
//使用for循環(huán)進(jìn)行遍歷
for(int i = 0;i
//找到最小值和最小值的索引
if(arr[i]
minIndex = i;
min = arr[i];
}
//找到最大值和最大值的索引
if(arr[i]>max){
maxIndex = i;
max = arr[i];
}
}
//將最小值和第一個數(shù)替換
int tempMin = arr[minIndex];
arr[minIndex] = arr[0];
arr[0] = tempMin;
//將最大值和最后一個數(shù)替換
int tempMax = arr[maxIndex];
arr[maxIndex] = arr[arr.length-1];
arr[arr.length-1] = tempMax;
//for循環(huán)遍歷輸出最后結(jié)果
for(int i = 0;i
System.out.print(arr[i]+",");
}
}
}else{
System.out.println("數(shù)組不能為null并且數(shù)組長度不能為0");
}
}
總結(jié)
以上是生活随笔為你收集整理的java数组键_Java基础之数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天吃水煮菜一个月能瘦多少
- 下一篇: java numberformat异常_