一、方法的定义
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
形参:参数为像是一个占位符,没有使用,就是给了个名字 比如add(int i)中的i
实参:实际参数,实际调用传递给他的参数
二、方法的调用
调用方法: 对象名.方法名(实参列表)
Java支持两种调用方法的方式,根据方法是否返回值来选择
- 当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int large = max(30,40);
- 如果方法返回值是void,方法调用一定是一条语句。
System.out.println("hello");
三、方法的重载
规则:
- 方法名字必须相同,
- 参数列表必须不同(个数不同、类型不同,参数排列顺序不同)
四、DOS命令行传参
public static void main(String[] args){
for (int i = 0;i < args.length;i++){
System.out.println("args["+i+"]:"+args[i]);
}
}
DOS命令行内用 javac编译,然后cd…/退回到包,在包的目录下执行命令传参
F:\java\src>java com.kuangshen.method.Demo
五、可变参数
- 在方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明。
demo.test(...i:1,2,3);//传不确定个数的参数
public void test(int... i){//可变参数
}
六、递归
- 递归就是:A方法调用A方法,自己调用自己
- 利用递归可以用简单的程序来解决一些复杂的问题
小计算用递归,不可以太大,栈会压不住,电脑硬件受不了
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
- 递归体:什么时候需要调用自身方法
//求阶乘 5!
public static int f(int n ){
if(n==1){
return 1;
}else{
return n*f(n:n-1);
}
}
作业:实现计算器
package test;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int s=0;
System.out.println("请输入需要运算的两个数:");
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
System.out.println("请输入要进行的运算(+、-、*、/)");
String symbol = scanner.next();
switch (symbol) {
case "+": System.out.println(x+"+"+y+"="+calculator.add(x,y));break;
case "-": System.out.println(x+"-"+y+"="+calculator.minus(x,y));break;
case "*": System.out.println(x+"*"+y+"="+calculator.multiply(x,y));break;
case "/": System.out.println(x+"/"+y+"="+calculator.division(x,y));break;
default:
System.out.println("请输入正确的符号:");
}
scanner.close();
}
public int add(int x,int y){
return x+y;
}
public int minus(int x,int y){
return x-y;
}
public int multiply(int x,int y){
return x*y;
}
public int division(int x,int y){
return x/y;
}
}
运行结果:
需要解决的问题:
- 当输入的符号不是±*/中的一个时提示后程序就结束了,后期如何解决退回到输入进行运算的那一行。
- 整个程序只能运行一次,不能重复输入计算。
- 如何直接让用户输入2*3也能得到结果(设计过程中不知道如何获取符号,所以拆开了)
- 学到一定知识后可以做一个良好的用户交互页面,类似于手机上的计算器。
----仅供参考