Java基礎--方法
阿新 • • 發佈:2020-07-22
方法定義
方法是是解決一類問題的步驟的有序組合
方法包含於類或物件中
方法在程式中被建立,在其他地方被引用
一個方法處理一件事情
方法的定義格式:
修飾符 返回值型別 方法名(引數型別 引數名){
......
方法體
......
return 返回值
}
實參、形參的概念
package method; public class Demo01 { //main方法 public static void main(String[] args) { int sum = add(1,2); //實參 System.out.println(sum); } public static int add(int a, int b){ //形參 return a+b; } }
package method; public class Demo02 { public static void main(String[] args) { int big = compare(10,10); System.out.println(big); } public static int compare(int a,int b){ if(a == b){ System.out.println(a+ "=" + b ); return 0; } return a>b ? a : b; } }
方法過載
方法名相同,引數型別或者引數個數或者引數排列順序不同就是方法過載。
package method; public class Demo02 { public static void main(String[] args) { double big = compare(10.0,10.0); System.out.println(big); } public static int compare(int a,int b){ if(a == b){ System.out.println(a+ "=" + b ); return 0; } return a>b ? a : b; } public static double compare(double a, double b){ if(a == b){ System.out.println(a+ "=" + b ); return 0; } return a>b ? a : b; } }
命令列傳參
有時候希望執行一個程式時,在傳遞給她次訊息在,這就靠命令列引數給main()函式實現。
可變引數
JDK1.5開始,Java支援傳遞同類型的可變引數給一個方法
在方法宣告中,在指定引數型別後加一個省略號(.....)
在一個方法中只能指定一個可變引數,而且它必須是該方法的最後一個引數
package method;
//可變引數 不定項引數
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1,2,3,4,5);
printMax(1.0,2,3.2,0.9);
printMax(new double[]{10,20.0,5.1,2});
}
public void test(int... i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
public static void printMax(double... numbers){
if(numbers.length ==0){
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i <numbers.length ; i++) {
if(numbers[i] > result){
result = numbers[i];
}
}
System.out.println("最大的數為:" + result);
}
}
遞迴方法
方法自己呼叫自己
遞迴頭: 什麼時候不呼叫自己的方法
遞迴體: 遞迴函式
遞迴採用的是棧機制,逐步遞迴就是壓棧,當深度很高的時候,時空性就非常不好,能不要遞迴就不遞迴。
package method;
// n的階乘
public class Demo6 {
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);
}
}
}