iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0

本日學習:

  1. 有傳回值的函數:
public class CH11_1 {
    public static void main(String[] args){
        double avg = average(1024);
        System.out.printf("avg = %.2f" , avg);
    }
    public static double average(int a){
        double sum = 0;
        for(int i = 1; i <= a; i++)
                sum += i;
        double avg = sum / a;
        return avg;
    }
}
  • avg 在兩函數間個別宣告且互不衝突
  • 可以傳達一個以上引數
public class CH11_2 {
    public static void main(String[] args){
        int a;
        a = area(8 , 4);
        System.out.print("area = " , a);
    }
    public static int area(int width , int height){
        return width * height;
    }
  1. 陣列的傳遞:
    • 函數在接收或傳回一個陣列時,傳送的都是陣列的位址
    • 必須指明要傳遞的型別與陣列的維度
    • 例如:
      public static void fun(int[] a){} // 接收一維 int 陣列
      public static int[] fun(){} // 傳回一維 int 陣列
      public static int[] fun(int[] a){}; //接收或傳回一維 int 陣列
    • 傳遞一維陣列:(二維陣列方法相同)
public class CH11_3 {
    public static void main(String[] args){
        int[] score = {1 , 43 , 32 , 7 , 6};
        largest(score);
    }
    public static void largest(int[] arr){ // 利用 arr 接收傳遞進來的陣列
        int max = arr[0];
        for(int i = 0; i < 5; i++){
            if(max < arr[i])
                max = arr[i];
        }
        System.out.print(max);
    }
}
  1. 陣列的傳回:
    • 在宣告函數時,就需要指明陣列的型別與維數
    • 例如:public static int[] fun(){}
  2. 傳值:在函數裡更改變數的內容不會影響到原先的變數
  3. 傳參考值:因為傳遞、接收都是同一個陣列,因此在函數裡改動,函數外面的陣列內容也會跟著改變
  4. 遞迴:
    • 函數本身呼叫自己,如:階層函數
    • 一定要有可以結束執行的中止條件
    • 因為未執行完畢的函數部分與區域變數會利用 stack 存放,所以當層數過大時,就有可能會有記憶體不足的問題
    • 遞迴的例子:
      public static int fac(int n) {
      if(n >= 1) {
      return n * fac(n - 1);
      }
      return 1;
      }
  5. 多載:
    • 相同名稱的函數,若引數個數不同,或是引數個數相同但型別不同,函數便具有不同的功能
    • 為了避免模稜兩可,在 java 只會根據引數的型別或個數來判別

本日結語:

  1. 今天把陣列的概念複習一遍、弄懂函數的機制,明天將開始試做練習題
  2. 可能需要多一點的練習

上一篇
Day 10:陣列與函數(1)
下一篇
Day 12:陣列與函數(3)
系列文
從零開始學程式語言:Java 新手修煉記 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言