方法
方法
方法的概念
- 修饰符:是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型
- 返回值类型:方法可能会有返回值。有些方法执行操作但没有返回值,这种情况下其关键字为void
- 方法名:方法的实际名称。方法名和参数表共同构成方法签名
- 形参:用于定义作用的
- 实参:实际调用时传输的参数
- 方法体:方法体包含具体的语句,定义该方法的功能
// 修饰符 方法名 形参
public static int max(int num1,int num2){
int result=num2;
if(num1==num2){
System.out.println("两数相同");
return result;//终止方法
}
if(num1>num2){
result = num1;
}
return result;//返回结果
}
方法的重载
方法重载的规则
- 方法的名称必须相同
- 参数列表必须有不同(个数不同、类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同或不同
- 仅仅返回类型不同不足以成为方法的重载
- 实现理论:方法名称相同时,编译器会根据调用方法的参数个数。参数类型等去逐个匹配,以选择对应的方法;若匹配失败,编译器报错
public static int max(int num1,int num2){}
public static double max(double num1,double num2){}
//根据调用时所给的参数类型,会调用不同的方法
命令行传参(仅了解)
通过命令行传参给main方法
可变参数/不定向参数
规则:
- 在方法声明时,在指定参数类型后加一个省略号...
- 一个方法中只能指定一个可变参数,它必须是方法最后一个参数
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1,2,3,4,5);
}
public void test(int...i) {
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
}
递归
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法,若没有头将陷入死循环
- 递归体:什么时候需要调用自身方法
public class Demo05 {
public static void main(String[] args) {
//阶乘
Scanner scanner = new Scanner(System.in);
System.out.println("计算阶乘,请输入数字:");
int n = scanner.nextInt();
scanner.close();
System.out.println("结果为:"+factorial(n));
}
public static int factorial(int n){
if(n==1){
return 1;//递归头,程序结束
}else{
return n*factorial(n-1);//递归
}
}
}
练习
设计加减乘除计算器
仅练习,未考虑输入非数字等情况
package com.Bry5e.method;
import java.util.Scanner;
public class Practice {
//计算加减乘除的计算器
static Scanner scanner = new Scanner(System.in);//应用scanner
static double result;//定义类变量 结果
public static void main(String[] args) {
String symbol = "?";//定义 符号
System.out.println("请输入数字:");
result = scanner.nextDouble();//接受第一个数字
int flag = 1;//循环标志
while (flag==1) {
System.out.println("请输入+-*/=:");
symbol = scanner.next();
switch (symbol) {
case "+":
result = plus(result);
break;
case "-":
result = subtract(result);
break;
case "*":
result = multiply(result);
break;
case "/":
result = divide(result);
break;
case "=":
System.out.println("结果为:"+result);
flag = 0;
break;
default:
System.out.println("输出错误!");
flag = 0;
break;
}
}
scanner.close();
}
public static double plus(double result) {
System.out.println("请输入数字:");
double num = scanner.nextDouble();//接收下一位数字
result += num;//完成对应的运算
return result;//返回运算结果
}
public static double subtract(double result) {
System.out.println("请输入数字:");
double num = scanner.nextDouble();
result -= num;
return result;
}
public static double multiply(double result) {
System.out.println("请输入数字:");
double num = scanner.nextDouble();
result *= num;
return result;
}
public static double divide(double result) {
System.out.println("请输入数字:");
double num = scanner.nextDouble();
result /= num;
return result;
}
}

浙公网安备 33010602011771号