Java方法和調(diào)用
什么是方法
是語句的集合滴铅,組合在一起執(zhí)行一個(gè)功能
包含于類或?qū)ο笾?/p>
在程序中被創(chuàng)建,其他地方被引用
在設(shè)計(jì)方的時(shí)候最好是一個(gè)方法完成一個(gè)功能就乓,這樣有利于后期拓展
比如你要出門汉匙,就要開門再出去,你要進(jìn)門也要開門生蚁,再進(jìn)來噩翠。
把開門和進(jìn)門,出門分開成為3個(gè)功能邦投,當(dāng)你要出門的時(shí)候就調(diào)用開門和出門方法伤锚。
方法的定義和調(diào)用
public static 返回類型 方法名稱([參數(shù)類型 變量, ......]) {
方法體代碼;
[return [返回值];]
}
這個(gè)返回值可以是int,String志衣,Map等等
參數(shù)也可以是多個(gè)屯援,用逗號(hào)隔開
public class TestDemo {
public static void main(String[] args) {
print(); //主方法里面直接調(diào)用方法
}
public static void print() {
System.out.println("Hello World!"); //定義方法
}
public int sumMoney(int money1,int money2){
int money = money1+money2;
return money;
}
}
方法重載
方法重載指的是:方法名稱相同剂娄,參數(shù)的類型和個(gè)數(shù)不同,或者參數(shù)的排列順序不同
public class TestDemo {
public static void main(String[] args) {
//此時(shí)將根據(jù)參數(shù)的類型和個(gè)數(shù)的不同執(zhí)行不同的方法體
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
public static int add(int x, int y) {
return x + y;
}
//此時(shí)方法名稱相同玄呛,參數(shù)的個(gè)數(shù)不同
public static int add(int x, int y, int z) {
return x + y + z;
}
public static double add(double x, double y) {
return x + y;
}
}
可變參數(shù)
參數(shù)類型…(三個(gè)點(diǎn)) 參數(shù)名
可變參數(shù)必須寫在參數(shù)列表的最后面
無法僅通過改變 可變參數(shù)的類型,來重載方法和二。
//可變參數(shù)本質(zhì)上可變參數(shù)就是一個(gè)數(shù)組徘铝。所以,數(shù)組擁有的方法惯吕、屬性惕它,可變參數(shù)一樣擁有。
public void varArgMethod(int b,int... arr) {
//和數(shù)組一樣废登,擁有屬性length
int lenth = arr.length;
//索引遍歷
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
//forEach循環(huán)遍歷
for(int ele:arr) {
System.out.println(ele);
}
}
方法遞歸調(diào)用
所謂遞歸就是自己調(diào)用自己淹魄。
分類
- 直接遞歸:方法自身調(diào)用自己。
- 間接遞歸:A方法調(diào)用B方法堡距,B方法調(diào)用C方法甲锡,C方法再調(diào)用A方法。
注意事項(xiàng)
- 遞歸一定要有條件限定羽戒,保證遞歸能夠停止下來缤沦,否則會(huì)形成死循環(huán)并發(fā)生棧內(nèi)存溢出(StackOverflowError)。
- 遞歸中雖然限定了停止下來的條件易稠,但是遞歸次數(shù)不能太多缸废,否則也會(huì)發(fā)生棧內(nèi)存溢出。
- 禁止構(gòu)造方法遞歸驶社。
//使用遞歸計(jì)算10的階乘
public class FactorialRecursion {
public static void main(String[] args) {
System.out.println(Factorial(5));
}
public static int Factorial(int n){
if (n==1){
return 1;
}else{
return n*Factorial(n-1);
}
}
}
它的原理:
分類: [javaSE]
[圖片上傳失敗...(image-b449ce-1628838381105)]