1,什么是方法?
封装在一起来执行操作语句的集合,用来完成某个功能操作在某些语言中称为函数或者过程
2.定义方法
修饰符\] 方法返回值类型 方法名(形参列表) { 方法体 return 返回值; } 例如:public static int add(int a, int b, int c) { int k=a+ b+c; return k; } 修饰符:之后会在封装的文章讲解,喜爱你在需要先记着这种结构 返回值:必选,如果没有返回值,需要写void,方法只能返回一个值 方法名:最好起一个能直接知晓这个方法是干啥的名字 参数列表:可以0个,1个,2个等等,需要同时说明参数类型,称为形式参数 发现以前我们程序的入口其实就是一个方法,方法的名字是main,叫main方法。 PS: 那么我们要是定义方法的话,就是跟main方法平级的概念。 3.方法定义好之后,是需要在别处调用的。 4.详细说一下定义的格式都是什么意思:--》暂时不做讲解,留到面向对象一章学习,暂时会用即可(1)修饰符:public static (2)返回值类型:你调用这个方法,会给你返回一个结果,这个结果对应的类型可能是什么类型: a.基本数据类型(byte,short,int,long,float,double,char,boolean) b.引用数据类型 (3)方法名:见名之意 ,首字母小写其余遵循驼峰命名:addNum,add, (4)形式参数(形参):方法定义的时候,用来接收你传过来的参数---》num1,num2 实际参数:方法调用的时候,具体传过去的参数-----\>10,20 PS:形参个数不固定,类型不固定,顺序不固定方法体:业务逻辑代码 (5)方法体:业务逻辑代码执行你这个功能的具体的代码 (6)return+方法的返回值;有没有一种可能,这个方法没有返回值? 可能当方法没有返回值的时候,return; 可以省略不写,并且对应的返回值类型为:void (7)什么时候有返回值,什么时候没有返回值啊?看心情。自己考虑,当这个返回值在接下来的代码中有用的时候,就带返回值。假如这个方法的返回值以后也没啥用了,就不用写了。 (8)方法定义的时候,明确两件事: a.这个方法中的不确定因素要作为形参 b.明确这个方法时候有返回值方法调用的时候,负责两件事: (9)a.负责把形参具体的数据传过去---》传入实参 b.负责考虑是否接收返回值 5.定义方法的好处:增加代码的复用性增加代码的可读性 **最简单的就是下面这样写的** **eg.** ```java public static void eat(){ System.out.println("啥都吃"); } ``` **方法的调用** ```java public class helloworld {//这个类的名字必须是和 public static void main(String[] args) { eat(); } public static void eat(){ System.out.println("啥都吃"); } } ``` Java里都是类,方法要定义在类里,同时不能定义在其他方法里 **有参方法举例:** ```java public class helloworld { public static void main(String[] args) { eat("zyf",10); } public static void eat(String name,int day){ System.out.println(name+"吃了"+day+"天"); } } //输出 zyf吃了10天 ``` **有返回值方法举例:** ```java public class helloworld { public static void main(String[] args) { System.out.println("zyf吃了 "+eat()+" 天"); } public static int eat(){ return 10; } } //输出 zyf吃了 10 天 ``` *** ** * ** *** #### 方法重载 先看下面正常的函数调用 ```java public class helloworld { public static void main(String[] args) { //调用方法 //10+20 System.out.println(add1(10,20)); //10+20+30 System.out.println(add2(10,20,30)); //20+40+60+80 System.out.println(add3(10,20,30)); } public static int add1(int a,int b){ return a+b; } public static int add2(int a,int b,int c){ return a+b+c; } public static double add3(double a,double b,double c){ return a+b+c; } } //输出 //30 //60 //60.0 ``` 下面是利用重载 ```java public class helloworld { public static void main(String[] args) { //调用方法 //10+20 System.out.println(add(10,20)); //10+20+30 System.out.println(add(10,20,30)); //20+40+60+80 System.out.println(add(10.0,20.0,30.0)); } public static int add(int a,int b){ return a+b; } public static int add(int a,int b,int c){ return a+b+c; } public static double add(double a,double b,double c){ return a+b+c; } } //输出 //30 //60 //60.0 ``` 我们可以观察到 1.方法的重载:当不同的方法完成的功能相似,定义为方法名相同,形参列表不同,构成了方法的重载。 2.重载的条件: (0)在同一个类中 (1)方法名相同 (2)形参列表不同 (个数不同,类型不同,顺序不同)-----意味着方法的重载跟修饰符,返回值类型无关 拿道题来练练方法 [B4025 最大公约数 - 洛谷https://www.luogu.com.cn/problem/B4025](https://www.luogu.com.cn/problem/B4025 "B4025 最大公约数 - 洛谷") > **题目描述** > > 定义两个正整数的最大公约数 gcd(a,b) 为最大的正整数 d,使得 d 可以同时整除 a 和 b。 > > 例如,gcd(9,12)=3,因为 9÷3 和 12÷3 的余数是 0,而无法找到一个比 3 更大的正整数满足要求。 > > 现在给定两个正整数 a,b,要求出 gcd(a,b)。 > > **输入格式** > > 输入两个正整数 a,b。 > > **输出格式** > > 输出 gcd(a,b)。 > > **输入输出样例** > > **输入 #1**复制 > > ``` > 9 12 > ``` > > **输出 #1**复制 > > ``` > 3 > ``` > > **输入 #2**复制 > > ``` > 100 1000 > ``` > > **输出 #2**复制 > > ``` > 100 > ``` > > **说明/提示** > > 对于 40% 的数据,1≤a,b≤1000。 > > 对于所有的数据,1≤a,b≤109。 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { int a,b; Scanner sc=new Scanner(System.in); a=sc.nextInt(); b=sc.nextInt(); System.out.println(gcd(a,b)); } public static int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b); } } ```