第三章 數組
1. 寫出一維數組初始化的兩種方式
int[] arr = new int[5];
String[] arr1 = new String[]{"a","b","c"};
數組一旦初始化,其長度就是確定的。arr.length
數組長度一旦確定,就不可修改。
2.寫出二維數組初始化的兩種方式
靜態初始化:
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
動態初始化1:
String[][] arr2 = new String[3][2];
動態初始化2:
String[][] arr3 = new String[3][];
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
3.如何遍歷如下的二維數組
int[] arr = new int[][]{{1,2,3},{4,5},{6,7,8}};
for(int i = 0;i < arr.lenght; i++){
for(int j =0;j<arr[i].lenght;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
4.不同類型的一維數組元素的默認初始化值各是多少
整數:0
浮點數:0.0
char:0
boolean:false
引用類型:null
5. 一維數組的內存解析:
String[] strs = new String[5];
strs[2] = “Tom”;
strs = new String[3];
6.楊輝三角
public class YangHuiTest {
public static void main(String[] args) {
int[][] yangHui = new int[10][];
for(int i = 0;i < yangHui.length;i++){
yangHui[i] = new int[i + 1];
yangHui[i][0] = yangHui[i][i] = 1;
if(i > 1){
for(int j = 1;j < yangHui[i].length - 1;j++){
yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
}
}
}
for(int i = 0;i < yangHui.length;i++){
for(int j = 0;j < yangHui[i].length;j++){
System.out.print(yangHui[i][j] + " ");
}
System.out.println();
}
}
7.使用冒泡排序,實現如下的數組從小到大排序。
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
for(int i = 0; i< arr.lenght - 1 ;j++){
for(int j = 0;j < arr.lenght - 1-i; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
8.數組反轉
for (int i = 0,j = arr.length - 1; i < j ; i++,j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
9.複製上述數組,得到一個新的數組
array2 = new int[arr.length];
for (int i = 0; i <array2.length ; i++) {
array2[i] = array1[i];
}
10.使用線性查找,從上述數組中查找22是否存在。存在,返回所在位置的索引。不存在,輸出提示信息。
int dest = 22;
boolean isFlag = true;
for(int i = 0;i < arr.lenght; i++){
if(dest == arr[i]){
System.out.println("找到了指定的元素,位置爲:" + i);
isFlag = false;
break;
}
}
if(isFlag){
System.out.println("很遺憾,沒有找到的啦!");
}
11.二分查找
int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int dest1 = -34;
int head = 0;
int end = arr2.length - 1;
boolean flag = true;
while (head <= end){
int middle = (head + end)/2;
if(dest1 == arr2[middle]){
System.out.println("找到了指定的元素,位置爲:" + middle);
flag = false;
break;
}
else if(arr2[middle] > dest1){
end = middle - 1;
}else{
head = middle+1;
}
}
if(flag){
System.out.println("很遺憾,沒有找到的啦!");
}
12.數組中常見的異常有哪些?請舉例說明
1.ArrayIndexOutOfBoundsException:數組角標越界異常:
合理範圍:[0,arr.length -1]
越界:arr[-1],arr[arr.length]
2.NullPointerException:空指針異常
int[] arr = null;
arr[0];