目錄
- Java方法
- 方法的定義
- 方法的組成
- 方法的多載
- 方法的多載規則
- 實作理論
- 命令列傳參
- 可變引數
- 遞回
- 遞回結構
Java方法
https://www.bilibili.com/video/BV12J41137hu/?p=45
方法的定義
- 方法是用來完成特定功能的代碼片段,
方法的組成
- 方法頭
- 修飾符,定義該方法的訪問型別,
- 回傳值型別,
- 方法名,方法名和引數型別共同構成方法簽名,
- 引數型別,
- 實參:呼叫方法時傳遞的引數,
- 形參:方法中的引數,用來定義引數,
- 方法體,定義該方法的功能,
方法的多載
多載就是在一個類中,有相同的函式名稱,但形參不同的函式,
方法的多載規則
- 方法名稱必須相同,
- 引數串列必須不同(個數不同、型別不同、引數排列順序不同等),
- 方法的回傳型別可以相同也可以不同,
- 僅僅回傳型別不同不足以成為方法的多載,
實作理論
方法名稱相同時,編譯器會根據呼叫方法的引數個數、引數型別等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯,
命令列傳參
package com.qing.method;
public class Demo01 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
D:\code\JavaSE\基礎語法\src\com\qing\method>dir
驅動器 D 中的卷沒有標簽,
卷的序列號是 46DA-BD61
D:\code\JavaSE\基礎語法\src\com\qing\method 的目錄
2020/10/31 12:43 <DIR> .
2020/10/31 12:43 <DIR> ..
2020/10/31 12:43 231 Demo01.java
1 個檔案 231 位元組
2 個目錄 307,004,313,600 可用位元組
D:\code\JavaSE\基礎語法\src\com\qing\method>javac Demo01.java
D:\code\JavaSE\基礎語法\src\com\qing\method>java Demo01
錯誤: 找不到或無法加載主類 Demo01
D:\code\JavaSE\基礎語法\src\com\qing\method>cd ../../../
D:\code\JavaSE\基礎語法\src>java com.qing.method.Demo01
D:\code\JavaSE\基礎語法\src>java com.qing.method.Demo01 Hello World
args[0]: Hello
args[1]: World
D:\code\JavaSE\基礎語法\src>
可變引數
- JDK1.5開始,Java支持傳遞同型別的可變引數給一個方法,
- 在方法宣告中,在指定引數型別后加一個省略號(...),
- 一個方法中只能指定一個可變引數,它必須是方法的最后一個引數,任何普通的引數必須在它之前宣告,
- 可變引數本質是陣列,
package com.qing.method;
public class Demo02 {
public static void main(String[] args) {
new Demo02().printMax();
new Demo02().printMax(7.1, 3, 5);
new Demo02().printMax(new double[]{7.1, 3, 5});
}
//列印最大值
private void printMax(double... numbers) {
if (numbers.length == 0) {
System.out.println("numbers is empty");
return;
}
double max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("max: " + max);
}
}
沒有傳參
max: 7.1
max: 7.1
遞回
遞回就是自己呼叫自己,
遞回結構
- 遞回頭:什么時候不呼叫自身方法,如果沒有頭,將陷入死回圈,
- 遞回體:什么時候需要呼叫自身方法,
最重要的是遞回思想,如果深度太大,不介意用遞回,會造成記憶體奔潰,
package com.qing.method;
public class Demo03 {
public static void main(String[] args) {
System.out.println("5! = " + f(5));
System.out.println("4! = " + f(4));
System.out.println("3! = " + f(3));
}
//遞回,計算階乘
//階乘:n! = n * (n-1) * (n-2)... * 1
private static int f(int n) {
if (n < 1) {
System.out.println("入參不能小于1");
return 0;
}
if (n == 1) {
return 1;
}
return n * f(n - 1);
}
}
5! = 120
4! = 24
3! = 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/200875.html
標籤:其他
上一篇:挑戰Redis單實體記憶體最大極限,“遭遇”NUMA陷阱!
下一篇:java中常見的六種執行緒池詳解
