數組
數組是是多個相同類型數據按一定順序排列的集合,并使用一個名字命名,并通過編號的方式對這些數據進行統一管理。
- 數組本身是引用數據類型,既可以存儲基本數據類型,也可以存儲引用數據類型。它的元素相當于類的成員變量。
- 創建數組對象會在內存中開辟一整塊連續的空間,而數組名中引用的是這塊連續空間的首地址。
- 數組的長度一旦確定,就不能修改。
- 通過下標(或索引)的方式調用指定位置的元素。
- 數組的分類:
按照維度:一維數組、二維數組、三維數組、…按照元素的數據類型分:基本數據類型元素的數組、引用數據類型元素的數組(即對象數組)
從六方面理解數組:
- 一維(二維)數組的聲明和初始化
- 如何調用數組指定位置的元素
- 如何獲取數組的長度
- 如何遍歷數組
- 數組元素的默認初始化值
- 數組的內存解析
一維數組的使用
格式:type var[] 或 type[] var
1
2
3
4
5
|
//靜態初始化:數組的初始化與數組元素的賦值同時進行 int [] num = new int []{ 1 , 2 , 3 , 4 , 5 }; //動態初始化:數組的初始化與數組元素的賦值分開進行 String[] names = new String[ 5 ]; name[ 0 ] = "11" ; |
**數組一旦初始化完成,數組的長度就確定了。
每個數組都有一個屬性length指明它的長度,例如數組a:a.length指明數組a的長度(元素個數)
數組的默認初始化值
對于基本數據類型:默認初始化值各有不同
對于引用數據類型:默認初始化值為null(注意:于0不同)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*從鍵盤讀入學生成績,找出最高分, 并輸出學生成績等級。 成績>=最高分-10 等級為'A' 成績>=最高分-20 等級為'B' 成績>=最高分-30 等級為'C' 其余 等級為'D' 提示:先讀入學生人數,根據人數創建int數組, 存放學生成績。*/ import java.util.Scanner; //在最上面 public class ArrayTest1 { public static void main(String[] args) { //調用Scanner輸入學生的成績 Scanner scan = new Scanner(System.in); System.out.println( "請輸入學生的人數:" ); int number = scan.nextInt(); //創建數組,存儲學生的成績。動態初始化 int [] score = new int [number]; int maxscore = 0 ; //將學生的成績賦值給數組 System.out.println( "請輸入" + number + "個學生成績" ); for ( int i= 0 ; i<score.length ; i++){ score[i] = scan.nextInt(); //直接在遍歷賦值時進行最大值的計算 if (maxscore <= score[i]){ maxscore = score[i]; } } //獲取數組中的最大值 /*int maxscore = 0; for(int i=0;i<score.length;i++){ if(maxscore < score[i]){ maxscore = score[i]; } }*/ //遍歷數組,計算學生的成績,并且輸出等級 char level; for ( int i= 0 ;i<score.length;i++){ if (maxscore - score[i] <= 10 ){ level = 'A' ; } else if (maxscore - score[i] <= 20 ){ level = 'B' ; } else if (maxscore - score[i] <= 30 ){ level = 'C' ; } else { level = 'D' ; } System.out.println( "student" + i + "score is" +score[i]+ "grade is " +level); } } } |
多維數組的使用(二維)
1
2
3
4
5
6
7
8
9
10
11
|
//都是正確的 int [][] arr = new int [][]{{ 1 , 2 },{ 2 , 3 , 4 },{ 4 , 5 , 6 }}; int [] arr1[] = new int [][]{{ 1 , 2 },{ 2 , 3 , 4 },{ 4 , 5 , 6 }}; int arr2[][] = new int [][]{{ 1 , 2 },{ 2 , 3 , 4 },{ 4 , 5 , 6 }}; int [][] arr3 = {{ 1 , 2 },{ 2 , 3 , 4 },{ 4 , 5 , 6 }}; //類型推斷 int [][] arr4; arr4 = {{ 1 , 2 },{ 2 , 3 , 4 },{ 4 , 5 , 6 }}; //錯誤的,無法識別數組的類型 |
數組的長度:
遍歷二維數組(雙層for循環)
1
2
3
4
|
for ( int i = 0 ; i<arr.length ; i++) { for (j = 0 ; j<arr[i].length ; j++) { System.out.print(arr[i][j]+ "" ); } System.out.println();} |
二維數組的使用
規定:二維數組分為外層數組的元素,內層數組的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int [][] arr = new int [ 4 ][ 3 ]; //外層元素:arr[0] 、arr[1]等 //內層元素:arr[0][0]等 //數組的默認值 int [][] arr = new int [ 4 ][ 3 ]; System.out.println(arr[ 0 ]); //輸出地址值,外層元素的初始化值,就是地址值 System.out.println(arr[ 0 ][ 1 ]); //0,內存元素的初始化值,與一維數組相同 int [][] arr = new int [ 4 ][]; System.out.println(arr[ 0 ]); //無論是什么類型的二維數組,后面一個沒有數值,都輸出null System.out.println(arr[ 0 ][ 1 ]); //報錯 |
二維數組的內存解析
數據的存儲結構:
線性表(一對一):順序表(例如:數組)、鏈表、棧、隊列
樹形結構(一對多):二叉樹
圖形結構(多對多)
1
2
3
4
5
6
7
8
9
|
聲明: int [] x,y[]; 在給x,y變量賦值以后,以下選項允許通過編譯的是: int [] x,y[];相當于 int [] x;與 int [] y[]; a ) x[ 0 ] = y; no //x是一維的,y是二維的,x[0]就是int型的一個數 b) y[ 0 ] = x; yes c) y[ 0 ][ 0 ] = x; no d) x[ 0 ][ 0 ] = y; no e) y[ 0 ][ 0 ] = x[ 0 ]; yes f) x = y; no |
到此這篇關于java循環結構、數組的文章就介紹到這了,更多相關java循環結構、數組內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/gym0/p/15310101.html