陣列
- 一維陣列
- 一維陣列的定義
- 一維陣列獲取長度
- 一維陣列取值
- 一維陣列賦值
- 二維陣列
- 二維陣列的定義
- 二維陣列的取值
- 二維陣列的賦值
- 陣列的復制
- for回圈遍歷復制
- 通過System.arraycopy方法
- 通過Arrays.copyOf()方法
- 通過clone()方法
- 復制物件和復制參考
- 排序
- 冒泡排序
- Arrays.sort方法排序
什么是陣列:
陣列是相同型別資料的有序集合,
陣列描述的是相同型別的若干個資料,按照一定的先后次序排列組合而成
其中,每一個資料稱作一個陣列元素,每個陣列元素可以通過一個下標來訪問他們
一維陣列
一維陣列的定義
1、創建陣列時直接定義并賦值 且給陣列定義好長度,
例如:
int [] a={12,23,45,56};
2、創建陣列時定義指出陣列的長度,并且為陣列創建記憶體空間,
例如:
int [] a1=new int[5];
3、創建陣列時對陣列進行定義、初始化、賦值,
例如:
int [] a2=new int []{12,34,56,78,89};
4、創建陣列時只是定義,不指出長度,不賦值,也不創建記憶體空間
例如:
int [] a3;
總的來說,簡單的定義陣列也就是以下的幾種方式
int[] a={12,12,12};
int[] a1=new int [3];
int[] a2=new int []{12,12,12};
int[] a3;
一維陣列獲取長度
陣列名 .length;
length:關鍵字,用來回傳陣列的個數
int[] a={12,12,12};
System.out.println("a陣列的個數為:"+a.length);
a陣列的個數為:3
一維陣列取值
1、通過下標來取值
int [] a=new int []{12,34,56,78,89};
System.out.println(a[1]);
列印a陣列下標為1的數;
34
2、通過for回圈遍歷開取值
int [] a=new int []{12,34,56,78,89};
for(int i =0 ;i<a.length;i++){
System.out.print(a[i]+"\t");
}
運行結果為:
12 34 56 78 89
例外報錯
ArrayIndexOutOfBoundsException: //陣列越界例外
一維陣列賦值
1、通過下標賦值
陣列名[下標]=值;
int[] a=new int[4];
a[0]=12;
a[1]=234;
a[2]=89;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
運行結果為
12
234
89
2、通過for回圈遍歷賦值
int [] a=new int [5];
System.out.print("賦值前陣列為:");
for (int b = 0; b < a.length; b++) {
System.out.print("\t"+a[b]);
}
System.out.println();
for (int j = 0; j < a.length; j++) {
a[j]=j+3;
}
System.out.print("賦值后陣列為:");
for(int i =0 ;i<a.length;i++){
System.out.print("\t"+a[i]);
}
運行結果為
賦值前陣列為: 0 0 0 0 0
賦值后陣列為: 3 4 5 6 7
二維陣列
二維陣列的定義
int[][] a={{12,12,12},{13,13,13},{14,14,14}};
int[][] a1=new int [3][3];
int[][] a2=new int [][]{{12,12,12},{13,13,13},{14,14,14}};
int[][] a3;
二維陣列的取值
for(int i = 0;i<a.length;i++){
for(int j = 0;j<a.length ;j++){
System.out.println(a[i][j]);
}
}
二維陣列的賦值
for(int i = 0;i<a1.length;i++){
for(int j = 0;j<a1[i].length ;j++){
a1[i][j]=i+j+10;
}
}
陣列的復制
for回圈遍歷復制
int[] a=new int[4];
int[] b= {45,12,65,87};
for (int i = 0; i < b.length; i++) {
a[i]=b[i];
}
System.out.print("賦值后a陣列的值為:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
運行后
賦值后a陣列的值為:45 12 65 87
通過System.arraycopy方法
System.arraycopy(a,0,a1,0,a.length);

1:被復制的陣列
2:從被復制的陣列的那個下標起復制
3:復制到那個陣列中
4:復制到那個陣列從什么復制開始復制
5:需要復制陣列的個數
通過Arrays.copyOf()方法
a1=Arrays.copyOf(a,a.length);

1:要復制的陣列
2:要復制的長度
a1==要復制到的陣列
通過clone()方法
a1=a.clone();
復制物件和復制參考
ctrl+滑鼠左鍵 點擊Open Declaration 查看源代碼

shift+alt+s 快捷鍵
復制物件:將一個物件完完全全復制到另一個物件 記憶體地址不一樣
復制參考:只是復制,還是原來的物件 記憶體地址一樣
排序
冒泡排序
通過雙重for回圈,讓陣列中的每一個數去與其他數都做對比,如果這個數比后面的大,則通過容器轉換,給轉換過去
int[] arr= {12,34,54,23,65,123,};
System.out.print("排序前的陣列為:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t"+arr[i]);
}
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
System.out.print("排序后的陣列為:");
for (int j = 0; j < arr.length; j++) {
System.out.print("\t"+arr[j]);
}
運行后的結果為
排序前的陣列為: 12 34 54 23 65 123
排序后的陣列為: 12 23 34 54 65 123
Arrays.sort方法排序
Arrays.sort(陣列名) 直接呼叫方法,進行排序
int[] arr= {13,98,78,97,67,45,123};
System.out.print("排序前的陣列為:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t"+arr[i]);
}
Arrays.sort(arr);
System.out.println();
System.out.print("排序后的陣列為:");
for (int j = 0; j < arr.length; j++) {
System.out.print("\t"+arr[j]);
}
運行結果為
排序前的陣列為: 13 98 78 97 67 45 123
排序后的陣列為: 13 45 67 78 97 98 123
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279239.html
標籤:java
