ch05 Java方法
Java方法
何谓方法?
System.out.println(); //类.对象.方法
- Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
修饰符 返回类型值 方法名(参数类型 参数名){
-----
方法体
-----
return 返回值;
}
方法的重载
- 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
- 方法的重载的规则:
- 方法名称必须相同。
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
public static double max(double num1, double num2){}
public static int max(int num1, int num2){}
public static int max(int num1, int num2, int num3){}
命令行传参
- 有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给maiO函数实现。
public class CommandLine{
public static void main(String args[]){
for(int i=0;i<args.length;i++){
System.out.println("args["+i+"]"args[i]);
}
}
}
可变参数(不定项参数)
- 在方法声明中,在指定参数类型后加一个省略号(…)。
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
递归
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
练习题—手写计算器
/*
设计一个计算器
- 写四个方法:加减乘除
- 利用循环+switch进行用户交互
- 传递需要操作的两个数
- 输出结果
*/
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
System.out.println("=============");
System.out.println(" Java 计算器");
System.out.println("=============");
System.out.println("请输入四则运算式(例 1 + 2):");
Scanner scanner = new Scanner(System.in);
double num1;
double num2;
char operator;
double result;
while (scanner.hasNextDouble()){
num1 = scanner.nextDouble();
operator = scanner.next().charAt(0);
num2 = scanner.nextDouble();
switch (operator){
case "+":
result = add(num1, num2);
System.out.println(""+num1+operator+num2+"="+result);
break;
case "-":
result = sub(num1, num2);
System.out.println(""+num1+operator+num2+"="+result);
break;
case "*":
result = multi(num1, num2);
System.out.println(""+num1+operator+num2+"="+result);
break;
case "/":
result = div(num1, num2);
System.out.println(""+num1+operator+num2+"="+result);
break;
default:
System.out.println("输入无效");
break;
}
System.out.println("输入算式继续运算,输入字符则程序结束!");
}
}
public static double add(double num1, double num2){
return num1+num2;
}
public static double sub(double num1, double num2){
return num1-num2;
}
public static double multi(double num1, double num2){
return num1*num2;
}
public static double div(double num1, double num2){
return num1/num2;
}
}
运行结果