Java基础: 方法(函数的调用)
方法解释
//方法类似其他语言的函数 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(); } }