java基礎-數組

數組

什麼時候使用數組:當元素較多時爲了方便操作這些數組,會先進行來臨時存儲,所使用的容器就是數組
特點:數組的長度是固定的
數組的內存分析:


二維數組

可以簡單理解爲在數組中又存儲了數組

Arrays的使用

遍歷: toString()    將數組的元素以字符串的形式返回

排序: sort()        將數組按照升序排列

查找: binarySearch()在指定數組中查找指定元素,返回元素的索引,如果沒有找到返回(-插入點-1) 注意:使用查找的功能的時候,數組一定要先排序。

 兩種初始化形式
 格式1: 動態初始化

數據類型 數組名 [ ][ ] = new 數據類型[m][n]
數據類型 [ ][ ]  數組名 = new 數據類型[m][n]
數據類型 [ ]   數組名 [ ] = new 數據類型[m][n]

舉例:int [ ][ ]  arr=new  int [5][3];  也可以理解爲“5行3例

格式2: 靜態初始化
數據類型 [ ][ ]   數組名 = {{元素1,元素2....},{元素1,元素2....},{元素1,元素2....}.....};

舉例:int [ ][ ]  arr={{22,15,32,20,18},{12,21,25,19,33},{14,58,34,24,66},};


1.聲明並初始化
//一維:
int[] i = new int[12];
i[0] = 12;

int[] j = new int[]{12,3};

//二維:
1)String[][] str = new String[4][3]; //4行3列

2)String[][] str1 = new String[4][];
str1[0] = new String[3];
...
str1[3] = new String[5];
3)
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};

2.如何引用二維數組的元素:arr[1][0] = 12;

3.二維數組的長度:arr.length;//3
arr[1].length;//2

4.遍歷二維數組

for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
 }

數組的常見異常

1.數組下標越界的異常:java.lang.ArrayIndexOutOfBoundsException
int[] i = new int[10];
i[0] = 90;
i[10] = 99;

for(int m = 0;m <= i.length;m++){
System.out.println(i[m]);
}
2.空指針的異常:NullPointerException
第一種:
boolean[] b = new boolean[3];
b = null;
System.out.println(b[0]);

第二種:
String[] str = new String[4];
//str[3] = new String("AA");//str[3] = "AA";
System.out.println(str[3].toString());

第三種:
int[][] j = new int[3][];
j[2][0] = 12;



數組的常用算法問題

1.求數組元素的最大值、最小值、和、平均數


2.數組的複製和反轉




數組的反轉:
// 數組元素的反轉
// for(int i = 0;i < arr.length/2;i++){
// int temp = arr[i];
// arr[i] = arr[arr.length-1 - i];
// arr[arr.length - 1 - i] = temp;
// }
for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}


拓展:String str = "abcdefg";

數組的排序:
插入排序
直接插入排序、折半插入排序、Shell排序
交換排序
冒泡排序、快速排序(或分區交換排序)
選擇排序
簡單選擇排序、堆排序
歸併排序
基數排序
 使用冒泡排序使數組元素從小到大排列
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;
}
}
}
//使用直接選擇排序使數組元素從小到大排列
for(int i = 0; i < arr.length - 1; i++){
int t = i;//默認i處是最小的
for(int j = i;j < arr.length;j++){
//一旦在i後發現存在比其小的元素,就記錄那個元素的下角標
if(arr[t] > arr[j]){
t = j;
}
}
if(t != i){
int temp = arr[t];
arr[t] = arr[i];
arr[i] = temp;
}
}
還可以調用:Arrays工具類:Arrays.sort(arr);





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章