方法解釋
//方法類似其他語言的函數
package com.cl.Method;
public class Demo01 {
//main方法
public static void main(String[] args) {
int sum = add(1,2);
System.out.println(sum);
}
//加法
//需加static讓它變成過一個類方法,main才能直接調用
//實參:eg:main的a:1,b:2;
//形參:由於定義作用的,eg:下面的a,b
public static int add(int a, int b){
//return返回的一個結果
return a+b;
}
//拓展!!
//值傳遞和引用傳遞
//值傳遞:在方法被調用時,實參通過形參把它的內容副本傳入方法內部,此時形參接收的內容是實參值的一個拷貝,因此在方法內對形參的任何操作,都僅僅是對副本的操作,不影響原始實參的內容
//引用傳遞:”引用”也就是指向真實內容的地址值,在方法調用時,實參的地址通過方法調用被傳遞給相應的形參,在方法體內,形參和實參指向通愉快內存地址,對形參的操作會影響的真實內容
//Java都是值傳遞
調用可變參數
package com.cl.Method;
public class Demo03 {
public static void main(String[] args) {
//調用可變參數方法
printMax(34,3,3,2,56.5);
printMax(new double[]{1,2,3});
}
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("The max value is"+result);
}
}
*遞歸(重點)
//遞歸!!!
//遞歸結構包括兩個部分:
//遞歸頭:什么時候不調用自身方法,如果沒頭,將陷入死循環
//遞歸體:什么時候調用自身方法
package com.cl.Method;
//階乘
public class Demo04 {
//2! 2*1
//31 3*2*1
//5! 5*4*3*2*1
public static void main(String[] args) {
System.out.println(f(4));
}
//1! 1
//2! 2*1
//5! 5*4*3*2*1
//2 2*f(1)
//3 3*f(2)
//階乘:eg: 5的階乘==5*(4*3*2*1)==5*f(4);
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1);
}
}
}
//遞歸缺點:時間復雜度高
//我認為遞歸本身不重要,他的思想重要
練習:加減乘除計算器
package com.cl.Method;
//練習:加減乘除計算器
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
menu();
}
public static int add(int a,int b){
return a+b;
}
public static double jian(int a,int b){
return a-b;
}
public static double cheng(int a,int b){
return a*b;
}
public static double chu(int a,int b){
return a/b;
}
public static void menu(){
int a,b,c;
System.out.println("please input database:");
System.out.println("1,add\t2,jian\t3,cheng\t4,chu");
Scanner scanner = new Scanner(System.in);
a=scanner.nextInt();
switch(a){
case 1:
b=scanner.nextInt();
c=scanner.nextInt();
System.out.println("值:"+add(b,c));
break;
case 2:
b=scanner.nextInt();
c=scanner.nextInt();
System.out.println("值:"+jian(b,c));
break;
case 3:
b=scanner.nextInt();
c=scanner.nextInt();
System.out.println("值:"+cheng(b,c));
break;
case 4:
b=scanner.nextInt();
c=scanner.nextInt();
System.out.println("值:"+chu(b,c));
break;
default:
break;
}
scanner.close();
}
}