Java基礎知識: 數組和函數

數組和函數


一、數組

1. 數組基本概念

  • 一維數組

    元素類型[] 數組名 = new 元素類型[元素個數或數組長度];
    元素類型[] 變量名 = {元素1,元素2...};
    元素類型[] 變量名 = new 元素類型[]{元素1,元素2...};
    
  • 二維數組

    元素類型[][] 數組名 = new 元素類型[第一維長度][第二維長度];
    
  • 數組常見異常

    • 數組腳標越界異常(ArrayIndexOutofBoundsException):訪問到了數組中不存在的腳標時發生
    • 空指針異常(NullPointerException):當引用沒有指向實體卻在操作實體中的元素時發生

2. 數組常見操作

2.1 遍歷

  • 遍歷所有數組元素然後輸出

    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                System.out.println(arr[x]+"]");
            }else {
                System.out.println(arr[x]+", ");
            }
        }
    }
    

2.2 最值

  1. 最大值

    public static int getMax(int[] arr) {
        int max = arr[0];       
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }                   
        return max;
    }
    
  2. 最小值

    public static int getMin(int[] arr) {
        int min = arr[0];           
        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }   
        return min;
    }
    

2.3 逆序

  • 把數組元素反轉後輸出

    public static void reverse(int[] arr) {
        for(int x=0; x<arr.length/2; x++) {
            int temp = arr[x];
            arr[x] = arr[arr.length-1-x];
            arr[arr.length-1-x] = temp;
        }
    }
    

2.4 二分查找法

  • 使用二分法查找數組元素,查找前數組一定是有序的

    public static int halfSearch(int[] arr,int key){
    int min,max,mid;
    min = 0;
    max = arr.length-1;
    mid = (max+min)/2;
    while(arr[mid]!=key){
        if(key>arr[mid]){
            min = mid + 1;
        }
        else if(key<arr[mid])
            max = mid - 1;
        if(max<min)
            return -1;
        mid = (max+min)/2;  
    }
    return mid;
    

    }


二、函數

1. 函數基本概念

  • 格式

    修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,…){
        執行語句;
        return 返回值;
    }
    
  • 修飾符

    • static – 靜態的
    • final – 最終的
    • abstract – 抽象的
    • synchronized – 同步的
    • native – 本地的
  • 當函數運算後,沒有具體的返回值時,這時返回值類型用一個關鍵字void來表示

  • void:代表函數沒有具體具體返回值的情況。當函數的返回值類型是void時,函數中的return語句可以省略不寫

  • 如何定義一個函數?

    • 明確函數返回值類型
    • 明確參數類型和個數

2. 函數重載

  • 重載條件

    • 方法名相同
    • 返回值可以相同也可以不同
    • 參數列表不同,可以是參數個數不不同,參數類型不同
  • 什麼時候用重載?

    • 當定義的功能相同,但參與運算的未知內容不用,這時就定義一個函數名稱來表示該功能,且通過參數列表的不同來區分多個同名函數。重載與返回類型無關

3. 函數調用

  • 一個類內部方法調用
    • 非靜態方法內部調用非靜態方法
    • 非靜態方法內部調用靜態方法
    • 靜態方法內部調用非靜態方法
    • 靜態方法內部調用靜態方法
  • 不同類內部方法調用
    • 不同類之間調用方法需要創建對象導包

4. 參數傳遞

  • 值傳遞
    • 參數原始值是不改變的
  • 地址傳遞
    • 在方法內部修改參數的值時,參數原始的值是改變的
  • 應用場景
    • 值傳遞
      • 8中基本數據類型和String類型
    • 地址傳遞
      • 除了String類以外的所有複合型數據類型,包括引用類型。


三、Java內存

  1. 寄存器
  2. 本地方法區
  3. 方法區
  4. 棧:存儲的都是局部變量,只要數據完成運算就會被釋放
  5. 堆:用於存儲數組和對象,也就是實體
發佈了54 篇原創文章 · 獲贊 16 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章