方法解釋
//方法類似其他語言的函數 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(); } }