天天看點

JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組

JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組

繼續開始學習我們的java基礎,這篇主要學習兩個知識點——方法、數組。

一、方法

方法:就是完成特定功能的代碼塊

注意:在很多語言裡面有函數的定義,而在Java中函數被稱為方法。

方法格式:

修飾符 傳回值類型 方法名(參數類型 參數名,參數類型 參數名..) {
            方法體語句;
            return 傳回值; 
        }
           
我們來詳細解釋一下方法的格式:

修飾符:目前就用 public static,後面我們再詳細的講解其他的修飾符。

傳回值類型:就是功能結果的資料類型。

方法名:符合命名規則即可。友善我們的調用。

參數:

  • 實際參數:就是實際參與運算的。
  • 形式參數;就是方法定義上的,用于接收實際參數的。

參數類型:就是參數的資料類型

參數名:就是變量名

方法體語句:就是完成功能的代碼。

return:結束方法的。

傳回值:就是功能的結果,由return帶給調用者。

要想寫好一個方法,就必須明确兩個東西:
  1. 傳回值類型——結果的資料類型
  2. 參數清單——要傳遞幾個參數,以及每個參數的資料類型

我們一起來寫一個Demo吧。

public class FunctionDemo {
    public static void main(String[] args) {
        int x = ;
        int y = ;
        //指派調用
        int result = sum(x,y);
        System.out.println(result);
    }

    /*
     * 明确:傳回值類型:int
     * 參數清單:2個,都是int類型
     */
    public static int sum(int a,int b){

        return a + b;
    }
}
           
輸出結果:30

方法注意事項:

1.方法不調用不執行

2.方法與方法是平級關系,不能嵌套定義

3.方法定義的時候參數之間用逗号隔開

4.方法調用的時候不用在傳遞資料類型

5.如果方法有明确的傳回值,一定要有return帶回一個值

二、重載

  • 方法重載概述
    • 在同一個類中,允許存在一個以上的同名方法,隻要它們的參數個數或者參數類型不同即可。
  • 方法重載特點
    • 與傳回值類型無關,隻看方法名和參數清單
    • 在調用時,虛拟機通過參數清單的不同來區分同名方法

我們來寫一個Demo吧!

public class FunctionTest {
    public static void main(String[] args) {

        System.out.println(sum(, ));
        System.out.println(sum(, , ));
        System.out.println(sum(, , , ));
    }

    // 需求1:求兩個數的和
    public static int sum(int a, int b) {
        return a + b;
    }

    // 需求2:求三數的和

    public static int sum(int a, int b, int c) {
        return a + b + c;
    }

    // 需求3:求四個數的和
    public static int sum(int a, int b, int c, int d) {
        return a + b + c + d;
    }
}
           

三、數組

  • 數組概念
    • 數組是存儲同一種資料類型多個元素的集合。也可以看成是一個容器。
    • 數組既可以存儲基本資料類型,也可以存儲引用資料類型。
  • 數組格式
    • 格式1:資料類型[] 數組名;
    • 格式2:資料類型 數組名[];
    • 注意:這兩種格式中,數組中是沒有元素值的。我們要對數組的元素進行初始化。
  • 數組初始化的概述:
    • Java中的數組必須先初始化,然後才能使用。
    • 為數組中的數組元素配置設定記憶體空間,并為每個數組元素指派。
  • 數組初始化的方式:
    • 動态初始化:初始化時隻指定數組長度,由系統為數組配置設定初始值。
    • 靜态初始化:初始化時指定每個數組元素的初始值,由系統決定數組長度。

我們先來學習動态初始化。

格式:資料類型[] 數組名 = new 資料類型[數組長度];

數組長度其實就是數組中元素的個數。

int[] arr = new int[];
//解釋:定義了一個int類型的數組,這個數組中可以存放3個int類型的值。
           

靜态初始化

格式:資料類型[] 數組名 = new 資料類型[]{元素1,元素2,…};

int[] arr = new int[]{,,};
//解釋:定義了一個int類型的數組,這個數組中可以存放3個int類型的值,并且值分别是1,2,3。

//現在我們經常用下面這簡化寫法
int[] arr = {,,};
           

Java中數組的記憶體配置設定

Java 程式在運作時,需要在記憶體中的配置設定空間。為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的處理資料方式和記憶體管理方式。
  • 棧記憶體——存儲局部變量
  • 堆記憶體——存儲new出來的東西
  • 方法區
    • 本地方法區 (和系統相關)
    • 寄存器 (給CPU使用)

    上面提到了局部變量,我們來解釋一下

    局部變量:方法定義中或者方法聲明上的所有變量,使用完畢,立即消失。

數組周遊

數組的周遊就是依次輸出數組中的每一個元素。

數組提供了一個屬性length,用于擷取數組的長度。

格式:數組名.length

public class ArrayTest {

    public static void main(String[] args) {

        int arr [] = {,,,,};

        for (int i = ; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
           
輸出結果
JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組

我們把方法和數組結合使用寫個Demo

public class ArrayTest {

    public static void main(String[] args) {

        int arr [] = {,,,,};

        printArray(arr);
    }

    public static void printArray(int []arr){
        for (int i = ; i < arr.length; i++) {
            System.out.print(arr[i]+",");
        }
    }
}
           
輸出結果:
JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組

我們來對上面的程式進行優化,去掉55後面的逗号。并加上括号。

public class ArrayTest {

    public static void main(String[] args) {

        int arr [] = {,,,,};

        printArray(arr);
    }

    public static void printArray(int []arr){
        System.out.print("[");

        for (int i = ; i < arr.length; i++) {

            if(i==arr.length-){ //這是最後一個元素
                System.out.print(arr[i]+"]");
            }else{
                System.out.print(arr[i]+",");
            }
        }
    }
}
           
輸出結果
JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組
這個輸出結果是不是比上面的那個好看多了。

擷取最值

擷取數組中的最大值最小值
public class ArrayTest2 {
    public static void main(String[] args) {
        //定義一個數組
        int[] arr = {,,,,};

        //調用方法
        int max = getMax(arr);
        System.out.println("max:"+max);

        //請擷取數組中的最小值
        int min = getMin(arr);
        System.out.println("min:"+min);
    }

    /*
        需求:擷取數組中的最大值
        兩個明确:
            傳回值類型:int
            參數清單:int[] arr
    */
    public static int getMax(int[] arr) {
        //從數組中任意的找一個元素作為參照物
        int max = arr[];
        //然後周遊其他的元素
        for(int x=; x<arr.length; x++) {
            //依次擷取和參照物進行比較,如果大就留下來,如果小,就離開。
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        //最後參照物裡面儲存的就是最大值。
        return max;
    }

    public static int getMin(int[] arr) {
        //從數組中任意的找一個元素作為參照物
        int min = arr[];
        //然後周遊其他的元素
        for(int x=; x<arr.length; x++) {
            //依次擷取和參照物進行比較,如果小就留下來,如果大,就離開。
            if(arr[x] < min) {
                min = arr[x];
            }
        }
        //最後參照物裡面儲存的就是最小值。
        return min;
    }
}
           
輸出結果
JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組

二維數組

概述:一個元素為一維數組的數組。
  • 格式
    • 資料類型[][] 變量名 = new 資料類型[m][n];
    • m表示這個二維數組有多少個一維數組
    • n表示每一個一維數組的元素個數
  • 舉例:
    • int[][] arr = new int[3][2];
    • 定義了一個二維數組arr
    • 這個二維數組有3個一維數組,名稱是arr[0],arr[1],arr[2]
    • 每個一維數組有2個元素,可以通過arr[m][n]來擷取
      • 表示擷取第m+1個一維數組的第n+1個元素

    二維數組還有兩種格式:

    格式2:資料類型[][] 變量名 = new 資料類型[m][];

    格式3:資料類型[][] 變量名 = {{元素…},{元素…},{元素…}};

    我們一起來做個練習吧!

/*
//需求:列印楊輝三角形
    1
    1 1 
    1 2 1
    1 3 3 1
    1 4 6 4 1 
    1 5 10 10 5 1
分析:看這種圖像的規律
    A:任何一行的第一列和最後一列都是1
    B:從第三行開始,每一個資料是它上一行的前一列和它上一行的本列之和。
步驟:
        A:首先定義一個二維數組。行數如果是n,我們把列數也先定義為n。這個n的資料來自于鍵盤錄入。
        B:給這個二維數組任何一行的第一列和最後一列指派為1
        C:按照規律給其他元素指派從第三行開始,每一個資料是它上一行的前一列和它上一行的本列之和。
        D:周遊這個二維數組。
*/
public class Array2Test {
    public static void main(String[] args) {
        //建立鍵盤錄入對象
        Scanner sc = new Scanner(System.in);

        //這個n的資料來自于鍵盤錄入。
        System.out.println("請輸入一個資料:");
        int n = sc.nextInt();

        //定義二維數組
        int[][] arr = new int[n][n];

        //給這個二維數組任何一行的第一列和最後一列指派為1
        for(int x=; x<arr.length; x++) {
            arr[x][] = ; //任何一行第1列
            arr[x][x] = ; //任何一行的最後1列
        }

        //按照規律給其他元素指派
        //從第三行開始,每一個資料是它上一行的前一列和它上一行的本列之和。
        for(int x=; x<arr.length; x++) {
            //這裡如果y<=x是有個小問題的,就是最後一列的問題
            //是以這裡要減去1
            //并且y也應該從1開始,因為第一列也是有值了
            for(int y=; y<=x-; y++) {
                //每一個資料是它上一行的前一列和它上一行的本列之和。
                arr[x][y] = arr[x-][y-] + arr[x-][y];
            }
        }

        //周遊這個二維數組。
        /*
        for(int x=0; x<arr.length; x++) {
            for(int y=0; y<arr[x].length; y++) {
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
        */
        //這個時候,要注意了,内循環的變化必須和曾經講過的九九乘法表類似
        for(int x=; x<arr.length; x++) {
            for(int y=; y<=x; y++) {
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}
           
輸出結果
JAVA基礎再回首(三)——方法、重載、數組、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組JAVA基礎再回首(三)——方法、重載、數組(靜态和動态初始化)、堆棧記憶體配置設定、數組周遊、擷取最值、二維數組
關于二維數組我們平時用的地方不是很多,但是數組我們還是會經常用到,是以我們要熟練掌握。
這章java基礎再回首三,我們就學到這裡,下次我們來一起學習面向對象的思想,它是java的重點,我們要好好學習。