方法
什么是方法
Java方法是语句的集合,它们在一起执行一个功能
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的命名规则
首字母小写后驼峰
设计方法的原则
原子性:保证一个方法只能完成1个功能
一般来说,main方法内要求简洁,因此我们就需要使用方法来简化main方法内的操作
public static void main(String[] args) { //main方法
int sum = add(4,5); //使用该方法
int sum2= add(81,19); //使用该方法
System.out.println(sum);
System.out.println(sum2);
}
public static int add(int a, int b){ //创建add的方法
//修饰符 返回值 名字v
return a+b;
}
定义和调用
方法的格式
比如说public static (修饰符) void(返回值) main(){
}
public static void main(String[] args) {
int max = max(20,20); //使用下面的方法
System.out.println(max); //输出哪个值大
}
public static int max(int num1,int num2){ //定义方法
int result = 0; //编写方法体
if (num1>num2){
result= num1;
}else if (num1<num2){
result = num2;
}else{
System.out.println("结果相等哦");
}
return result; //如果返回值不为空一定要返回值
//return也可用于终止方法《有始有终》
}
方法重载
方法重载就是在一个类中,有相同的函数名称,但形参不太能的函数
方法重载的规则
方法名称必须相同
参数列表必须不同(个数、类型或参数排列顺序不同等等)
方法的返回类型可以相同也可以不相同
仅仅返回类型不同不足以成为方法的重载
public static int add(int a, int b){
//修饰符 返回值 名字
return a+b;
}
public static int add(int a, int b,int c){
//这里是改变参数列表的个数达到方法重载↑
//修饰符 返回值 名字
return a+b;
}
命令行传参
有时候你希望运行一个程序的时候再传递给他消息,只需要出阿暖地命令行参数给main()函数实现
但如果需要运行class文件,路径要从src开始写包的路径
可变参数
在编写方法时,如果不确定需要加几个参数或者需要兼容多个参数,可使用可变参数(写N个方法重载的良性代替)
使用条件
在指定参数类型后加一个省略号(…)
同时需要保证省略号加在靠最后一个参数上
递归
递归即A方法调用A方法,我自己调用自己
递归可以将一些复杂的问题转化为相对简单的问题来求解。大大地减少了程序的代码量。递归的能力在于用有限的语句定义对象的无限集合
递归包含两个部分:
递归头:什么时候不用调用自身方法。如果没有头,将陷入死循环。
递归体:什么时候需要调用自身方法
测试
//写一个计算器,要求实现加减乘除,并能够循环接收新的数据,通过用户交互实现
//思路推荐:写4个方法加减乘除 利用循环+switch进行用户交互,传递需要操作的两个数,输出结果
package com.jiang.method;
import java.util.Scanner;
//写一个计算器,要求实现加减乘除,并能够循环接收新的数据,通过用户交互实现
//思路推荐:写4个方法加减乘除 利用循环+switch进行用户交互,传递需要操作的两个数,输出结果
public class TestDemo01 {
public static void main(String[] args) {
double a=0;
double b=0;
String c=null;
String d="null";
double result=0;
System.out.println("欢迎来到一个菜鸡想写计算器但只能写一点点的计算器程序");
System.out.println("本计算器只支持两位数字的四则运算,所以");
for (int i = 0; i < 10; i++) {
Scanner scanner1 = new Scanner(System.in);
System.out.println("请输入你的第一位数字a");
a = scanner1.nextDouble();
Scanner scanner3 = new Scanner(System.in);
System.out.println("再请输入运算符(+,-,*,%)");
c = scanner3.nextLine();
Scanner scanner2 = new Scanner(System.in);
System.out.println("最后请输入第二位数字b");
b = scanner2.nextDouble();
switch (c){
case "+":
result=plus(a,b);break;
case "-":
result=subtract(a,b);break;
case "*":
result=multiply(a,b);break;
case "%":
result=divide(a,b);break;
default:
System.out.println("你的输入有误,请重新输入!");
} System.out.println("结果为:"+result);
System.out.println("还需要继续进行运算吗(是请输入(‘Y’、‘y’),不是请输入(‘N’、‘n’))");
Scanner scanner4 = new Scanner(System.in);
d = scanner4.nextLine();
if (d.equals("y")||d.equals("Y")){
System.out.println("正在重新开始。。。");
continue; }
else if (d.equals("n")||d.equals("N")){
break ;//这里如果想要接收文字类,记得使用equals!!!!!!!!!!
}
}
}
public static double plus(double a , double b){
return a+b;
}
public static double subtract(double a , double b){
return a-b;
}
public static double multiply(double a , double b){
return a*b;
}
public static double divide(double a , double b){
return a/b;
}
}
本文含有隐藏内容,请 开通VIP 后查看