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