第三章 Java語言之數組

第三章 數組

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
char0
booleanfalse
引用類型:null

5. 一維數組的內存解析:

String[] strs = new String[5];
strs[2] = “Tom”;
strs = new String[3];  //重新開闢了地址

6.楊輝三角

public class YangHuiTest {

    public static void main(String[] args) {
        //1.聲明並初始化二維數組
        int[][] yangHui = new int[10][];

        //2.給數組的元素賦值
        for(int i = 0;i < yangHui.length;i++){
            yangHui[i] = new int[i + 1];

            //2.1 給首末元素賦值
            yangHui[i][0] = yangHui[i][i] = 1;
            //2.2 給每行的非首末元素賦值
            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];
            }
            }
        }


        //3.遍歷二維數組
        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];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章