Java基礎入門篇——方法和重載
一、什么是方法
1.簡單來說方法就是一段可以被重復調(diào)用的代碼塊。對于一些復雜的代碼,如果希望重復使用這些代碼,做到隨時都可以用,就把這些代碼放在大括號({})中,自定義一個名字。需要使用這些代碼時,使用這個名字調(diào)用就可以。
2.方法的語法格式
- 修飾符 返回值類型 方法名([參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,...]){
- 執(zhí)行語句
- ...
- return 返回值;
- }
語法格式的具有說明:
修飾符:方法修飾符比較多,對訪問權(quán)限進行限定的,現(xiàn)在階段的有public static兩個關鍵字。
返回值類型:方法最終的結(jié)果數(shù)據(jù)是什么類型。
方法名:自定義的名稱,命名規(guī)則和變量一樣。
參數(shù)類型:用在調(diào)用方法時傳入的參數(shù)的數(shù)據(jù)類型。
參數(shù)名:是一個變量,用在接受調(diào)用方法傳入的數(shù)據(jù)。
return關鍵字:結(jié)束方法的執(zhí)行,并將這個返回值還給調(diào)用處。
返回值:方法最終的結(jié)果數(shù)據(jù)。
需要注意一點就是“參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2”這個是叫做參數(shù)列表,它的作用是方法被調(diào)用時需要接受的參數(shù)。如果方法不接受任何參數(shù),參數(shù)列表就是空的。方法的返回值一定是方法聲明的返回值類型,如果方法的返回值類型聲明為void,說明方法沒有返回值,這時return就可以省略掉。
3.定義一個求兩個整數(shù)和方法:
代碼如下所示:
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scan = new Scanner(System.in);
- int a = scan.nextInt();
- int b = scan.nextInt();
- int add_num = sum(a,b);//調(diào)用sum方法
- System.out.println(add_num);
- }
- //類的方法--定義一個求兩個整數(shù)的和,接受兩個參數(shù)n和m
- public static int sum(int n, int m) {
- int sum = n + m;
- return sum;
- }
輸出的結(jié)果是:
- 5
- 6
- 11
從上面代碼我們可以看出,接受用戶輸入的兩個數(shù)a和b,定義一個方法求兩個整數(shù)的和,分別用于接受調(diào)用方法的傳入的n和m,把用戶輸入的a的值傳給參數(shù)n,b的值傳給參數(shù)m,定義一個int類型變量sum進行兩個數(shù)的相加,通過return返回計算兩個整數(shù)和相加。在main方法中,調(diào)用sum方法,獲得兩個整數(shù)的和的值,打印輸出兩個整數(shù)和的值。
二、方法的重載
1.同一個類中的兩個或兩個以上的方法可以有相同的名字,只要它們的參數(shù)聲明不同即可,就是方法重載。
2.當一個重載方法被調(diào)用時,Java 根據(jù)參數(shù)的類型、參數(shù)的個數(shù)、參數(shù)的順序來確定實際調(diào)用的是重載方法的哪一個版本,只有形式參數(shù)與調(diào)用參數(shù)相匹配的方法被執(zhí)行。
3.通過一個小案例分析方法的重載:
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scan = new Scanner(System.in);
- int a = scan.nextInt();
- int b = scan.nextInt();
- int add_num1 = sum1(a,b);//調(diào)用sum1方法
- System.out.println("兩個整數(shù)的和值"+add_num1);
- int c = scan.nextInt();
- int d = scan.nextInt();
- int e = scan.nextInt();
- int add_num2 = sum2(c,d,e);//調(diào)用sum2方法
- System.out.println("三個整數(shù)的和值"+add_num2);
- double x = scan.nextDouble();
- double y = scan.nextDouble();
- double z = scan.nextDouble();
- double add_num3 = sum3(x,y,z);//調(diào)用sum3方法
- System.out.println("三個小數(shù)的和值"+add_num3);
- }
- //sum1方法,求兩個整數(shù)和的值接受兩個參數(shù),a和b
- public static int sum1(int a, int b) {
- int sum = a + b;
- return sum;
- }
- //sum2方法,求三個整數(shù)和的值接受三個參數(shù),c d e
- public static int sum2(int c, int d,int e) {
- int sum = c + d + e;
- return sum;
- }
- //sum3方法,求三個小數(shù)和的值接受三個參數(shù),x y z
- public static double sum3(double x, double y, double z) {
- double sum = x + y + z;
- return sum;
- }
運行的結(jié)果是:
- 1
- 2
- 兩個整數(shù)的和值3
- 1
- 2
- 3
- 三個整數(shù)的和值6
- 1.2
- 1.5
- 1.3
- 三個小數(shù)的和值4.0
從上面我們可以看出如果每個方法的名稱都不相同,在調(diào)用方法就很難哪種情況去調(diào)用哪種方法,解決這個問題就用java的重載的方法。java允許定義多個名稱相同的方法,但是它的參數(shù)類型和個數(shù)不同。把這個例子修改成java的方法重載:
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scan = new Scanner(System.in);
- int a = scan.nextInt();
- int b = scan.nextInt();
- int add_num1 = sum(a,b);//調(diào)用sum方法
- System.out.println("兩個整數(shù)的和值"+add_num1);
- int c = scan.nextInt();
- int d = scan.nextInt();
- int e = scan.nextInt();
- int add_num2 = sum(c,d,e);//調(diào)用sum方法
- System.out.println("三個整數(shù)的和值"+add_num2);
- double x = scan.nextDouble();
- double y = scan.nextDouble();
- double z = scan.nextDouble();
- double add_num3 = sum(x,y,z);//調(diào)用sum方法
- System.out.println("三個小數(shù)的和值"+add_num3);
- }
- //sum方法,求兩個整數(shù)和的值接受兩個參數(shù),a和b
- public static int sum(int a, int b) {
- int sum = a + b;
- return sum;
- }
- //sum方法,求三個整數(shù)和的值接受三個參數(shù),c d e
- public static int sum(int c, int d,int e) {
- int sum = c + d + e;
- return sum;
- }
- //sum方法,求三個小數(shù)和的值接受三個參數(shù),x y z
- public static double sum(double x, double y, double z) {
- double sum = x + y + z;
- return sum;
- }
我們可以發(fā)現(xiàn)方法重載它需要滿足兩個條件:
第一個是方法名一樣;
第二個是參數(shù)類型或參數(shù)的個數(shù)不同。
三、方法遞歸
1.方法的遞歸簡單而言一個方法內(nèi)調(diào)用自己本身。
2.使用遞歸實現(xiàn)九九乘法表:
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- n(9);
- }
- public static void n(int i) {
- if (i == 1) {
- System.out.println("1*1=1 ");
- } else {
- n(i - 1);
- for (int j = 1; j <= i; j++) {
- System.out.print(j + "*" + i + "=" + j * i + " ");
- }
- System.out.println();
- }
- }
運行的結(jié)果如下所示:
- 1*1=1
- 1*2=2 2*2=4
- 1*3=3 2*3=6 3*3=9
- 1*4=4 2*4=8 3*4=12 4*4=16
- 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
- 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
- 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
- 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
- 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
遞歸方法是怎么執(zhí)行的呢?遞歸的方式調(diào)用如下所示:
- n(9)
- n(8)for(i=9)
- n(7)for(i=8)
- n(6)for(i=7)
- n(5)for(i=6)
- n(4)for(i=5)
- n(3)for(i=4)
- n(2)for(i=3)
- n(1)for(i=2)
四、總結(jié)
本文介紹了方法、方法的重載、方法的遞歸。介紹方法的格式,語法格式的具體說明通過一個求兩個整數(shù)和的值案例來分析方法的用法。介紹方法重載是允許定義多個相同的方法名,但它的參數(shù)類型和參數(shù)個數(shù)需要不同。遞歸的方法是自己調(diào)用自己,通過一個九九乘法表了解遞歸方式的調(diào)用。希望大家通過本文的學習,能夠幫助到你!
本文轉(zhuǎn)載自微信公眾號「 Java進階學習交流 」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系 Java進階學習交流 公眾號。