八、Java方法詳解
什麼是方法
方法是語句的集合,他們在一起執行一個功能
- 方法是解決一類問題的步驟的有序組合
- 方法包含類或對象中
- 方法在程式中被建立,在其他地方被引用
- 方法設計原則:保持方法的原子性,一個方法隻完成一個功能,利于後期拓展
e.g.
package com.kuang.method; public class Demo01 { //main方法 public static void main(String[] args) { int add=add(1,2); System.out.println(add); } //加法 public static int add(int a,int b){ return a+b; } }
方法的定義及調用
文法
修飾符 傳回值類型 方法名(參數類型 參數名){
方法體
return 傳回值;
}
比較大小
package com.kuang.method;
public class Demo02 {
public static void main(String[] args) {
int max = max(3, 3);
System.out.println(max);
}
//比大小
public static int max(int a, int b) {
if(a==b){
System.out.println("a=b");
return a;//終止方法
}else{
return a > b ? a : b;
}
}
}
方法重載
重載就是在一個類中,有相同的函數名稱但是形參不同的函數
方法重載規則:
- 方法名稱必須相同
- 參數清單必須不同(個數不同,類型不同,參數排列順序不同)
- 傳回類型可以相同可以不同
- 傳回類型不同不足以構成重載
public static void main(String[] args){
public static int max(int num1,int num2){
int resault;
return resault;
}
public static int max(double num1,int num2){
return
}
}
指令行傳參
使用指令行傳遞參數
package com.kuang.method;
public class Demo03 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args"+"["+i+"]"+args[i]);
}
}
}
需要在資料總管中的檔案夾下運作cmd,輸入
javac Demo03.java
進行編譯,運作需要傳回至
src
目錄下,輸入
java 目錄名.檔案名 參數
運作
可變參數
如果出現不清楚多少參數的情況下可以使用可變參數
例如這種情況
public void main(String[] args) {
}
public void method(int i){
}
public void method(int i,int i1){
}
public void method(int i,int i1,int i2){
}
可以使用下面的方法
public void method(int... i) {
}
- 在方法聲明中,在指定參數後面加一個省略号
...
- 方法聲明中隻可定義一個可變參數,必須是方法的最後一個參數,任何普通參數必須在它之前聲明
遞歸
- 遞歸就是A方法調用A方法
使用遞歸實作階乘
package com.kuang.method;
public class Demo06 {
public static void main(String[] args) {
System.out.println(f(5));
}
//5! 5*4*3*2*1
public static int f(int i){
if(i==1){
return 1;
}else{
return i*f(i-1);
}
}
}
簡易電腦
package com.kuang.method;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double num1 = 0.0;
double num2 = 0.0;
double resault = 0.0;
String operator = "";
//運算符
System.out.print("請輸入運算符(輸入其他字元退出):");
if (scanner.hasNext()) {
operator = scanner.next();
}
while (true) {
if(operator.equals("x")||operator.equals("X")||operator.equals("*")
||operator.equals("/")||operator.equals("+")||operator.equals("-")){
System.out.println("請輸入兩個數(以空格或回車區分)");
num1 = scanner.nextDouble();
num2 = scanner.nextDouble();
}
switch (operator) {
case "*":
case "x":
case "X":
resault = num1 * num2;
break;
case "/":
resault = num1 / num2;
break;
case "+":
resault = num1 + num2;
break;
case "-":
resault = num1 - num2;
break;
default:
System.out.println("程式結束");
return;
}
System.out.println(num1+operator+num2+"="+resault);
System.out.print("請輸入運算符(輸入其他字元退出):");
if (scanner.hasNext()) {
operator = scanner.next();
}
}
}
}