java基礎筆記(八)——java方法
-
方法是用來解決同一類問題,是一些有序語句的集合
-
在設計方法時要保證方法的原子性,即一個方法只完成一個特定的功能,這樣便於後期的擴充套件
方法的定義
修飾符 返回值型別 方法名(形參型別 形參1,形參型別 形參2,...){方法體內容}
-
修飾符:public static 最常用
-
返回值型別:除了void型別外,指定其他返回值型別後,需要在方法體中return一個結果
-
形參與實參的區別:
-
形參:定義方法用,指名該方法處理的資料型別
-
實參:程式執行過程中,實際呼叫的變數
-
值傳遞與引用傳遞
java是值傳遞,這句話是正確的
-
值傳遞:對於基本資料型別而言,值傳遞傳遞的是真實內容的一個副本,對副本的操作不影響原內容,也就是無論怎麼操作形參,都不會影響到原來的內容。
-
引用傳遞:引用傳遞中,形參實參都指向同一個物件在記憶體中的地址,對形參的操作會改變原內容。
-
為什麼說java是值傳遞
-
因為,對於引用資料型別而言,傳遞的是實參在記憶體中指向的地址,對實參進行操作雖然會改變原內容,但是實參傳遞的地址並沒有發生變化。所以說java本質上還是值傳遞。
-
方法過載
在一個類中,有兩個及以上的方法,出現方法名相同,引數列表不同(即引數列表唯一)的現象稱為方法過載。方法過載與方法的返回值型別無關,僅與方法名與引數列表有關。
可變引數
-
jdk5以後出現的,允許傳遞同一型別的可變引數給方法
-
格式:在想要傳遞的型別後加”...“即可
-
要求:一個方法中僅能傳遞一個可變引數,並且該可變引數只能是方法的最後一個引數。任何普通引數都必須在可變引數之前。
-
案例排序:找最大數
printMax(20,15,19,85,55);
printMax(new double[]{1,2,3});
}
private static void printMax(double... numbers) {
if (numbers.length == 0){
System.out.println("資料還未傳遞");
return;
}
double result = 0;
//排序
for (int i = 0; i < numbers.length; i++) {
if (result < numbers[i]){
result = numbers[i];
}
}
System.out.println("最大數為:" + result);
}
遞迴
-
遞迴簡單的說就是自己呼叫自己
-
遞迴包括兩個部分
-
遞迴頭:什麼時候不呼叫自身方法。如果沒有遞迴頭,程式將陷入死迴圈
-
遞迴體:什麼時候需要呼叫自身方法。
-
-
使用遞迴的場景:
-
遞迴雖然能能很方便的解決一些問題,但是僅限於一些資料量交少的情況。如果資料量過大,不建議使用遞迴,否則很容易造成棧空間的崩潰。
-
案例:階乘
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if (n==1){
return 1;
}else {
return n * f(n-1);
}
} -
-