一、方法介绍以及简单方法定义
1.问题
之前所有的代码都在main方法中写,如果我们将来将所有的功能的代码都放在main方法中,会显得main方法代码太多,太乱,不好维护,所以我们要将不同功能的代码放在不同的方法中,想执行某个功能,直接调用方法名就行了,对应的代码就自动执行起来了,将来维护的时候,直接找到对应的方法,就可以对其直接修改维护。
2.方法
拥有功能性代码的代码块,将不同的功能放在不同的方法中,给每个方法取个名字,直接调用方法,对应的方法就执行起来了,方便维护
3.通用定义格式
修饰符 返回值类型 方法名(参数){
方法体
return 结果
}
解释:
修饰符:public static
返回值类型:该方法最终返回的结果是数据类型
例如:return 1 ->方法返回值类型写int
return “” ->方法返回值类型写String
如果没有返回值,不要写具体的返回值类型了,要写void
方法名:见名知意(小驼峰式)
参数:进入到方法内部参与执行的数据(数据类型 变量名,数据类型 变量名)
方法体:实现该方法的具体代码
return 结果:如果有返回值,可以利用return将结果返回
4.四种方法
- 无参无返回值方法
- 有参无返回值方法
- 无参有返回值方法
- 有参有返回值方法
二、方法具体介绍
1.无参无返回值方法
public static void 方法名(){
方法体->实现此方法的具体代码
}
注意:void关键字代表无返回值,写了void不能写return结果
方法不调用不执行,main方法时jvm调用的,方法之间不能相互嵌套,方法之间是平级关系,方法的执行顺序只和调用顺序有关
public class Demo01Method {
public static void main(String[] args) {
farmer();
}
public static void farmer(){
System.out.println("播种");
System.out.println("施肥");
}
}
2.有参无返回值
public static void 方法名(数据类型 变量名){
方法体->实现此方法的具体代码
}
调用:
方法名(具体的值)->调用的时候要给参数赋值
public class Demo02Method {
public static void main(String[] args) {
sum(3,5);
}
//有参无返回值
public static void sum(int a,int b){
int sum=a+b;
System.out.println(sum);
}
}
3.无参有返回值
public static void 方法名(){
方法体
return 结果
}
调用:返回值返回给了谁?哪里调用返回给哪里
- 打印调用:sout(方法名())->不推荐使用
- 赋值调用:调用完以后用一个变量接收返回值结果->推荐
数据类型 变量名=方法名()
public class Demo03Method {
public static void main(String[] args) {
//打印调用
//System.out.println(sum());
//赋值调用
int result=sum();
System.out.println("result="+result);
}
public static int sum(){
int a=10;
int b=20;
int sum=a+b;
return sum;
}
}
public class Demo05Method {
public static void main(String[] args) {
int[] arr2=method();
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
/*
* 将数组作为返回值
* */
public static int[] method(){
int a=10;
int b=20;
int sum=a+b;
int sub=a-b;
int[] arr1={sum,sub};
return arr1;//返回的是一个int[],那么返回值类型也应该是int[]
}
}
4.有参有返回值
public static 返回值类型 方法名(参数){
方法体
return 结果
}
调用:
- 打印调用:sout(方法名())->不推荐使用
- 赋值调用:调用完以后用一个变量接收返回值结果->推荐
数据类型 变量名=方法名()
形式参数(形参):在定义方法的时候形式上定义的参数,此参数还没有值
实际参数(实参):在调用方法的时候给形参赋予的具体值
public class Demo04Method {
public static void main(String[] args) {
int a=10;
int b=20;
method(a,b);//a代表的10以及b代表的20传递过去
System.out.println("=============");
int result=sum(10,20);
System.out.println(result);
}
//用参数
public static int sum(int a,int b){
int result=a+b;
return result;
}
public static void method(int a,int b){//a=10,b=20
System.out.println(a+".."+b);
}
}
三、参数和返回值使用的时机
1.参数
当想将方法A的数据传递到方法B时,那么定义方法B时就需要带个参数,在方法A中调用方法B时,可以将方法A中的数据通过参数传递到方法B中
2.返回值
调用方法A时,想要方法A的结果。去参与其他的操作,那么方法A就需要将自己的结果返回
3.变量作为实际参数使用
public class Demo05Method {
public static void main(String[] args) {
int i=10;
int j=20;
boolean result=compare(i,j);
//变量作为实参使用,传递的是i和j,但是我们真正传递的是i和j代表的数据,不是变量本身
System.out.println("result="+result);
}
public static boolean compare(int a,int b){
if (a>b){
return true;
}else {
return false;
}
}
}
方法不调用不执行,方法的执行顺序与调用顺序有关,方法之间不能相互嵌套
Void不能和[return 结果]共存,但是void能和[return]共存
- void:代表没有返回值
- return 结果:就代表有返回值了,先将结果返回,然后结束方法
- return:仅仅代表结束方法,不代表有返回值
一个方法中不能写多个return(一个方法不能有多个返回值)
调用方法时看看有无该方法
public class Demo06Method {
public static void main(String[] args) {
method();
}
public static void method(){
// return 1; 加int
return;
}
}
四、重载
方法名一致,但是参数列表不同的方法
什么是参数列表不同:参数个数不同 参数类型不同 参数类型顺序不同
判断两个方法是否为重载方法,和什么无关:和参数名无关 和返回值无关
如果定义方法功能一样,只不过实现细节不一样,就可以考虑定义成重载的方法。
public class Demo01OverLoad {
public static void main(String[] args) {
sum(10,20);
sum(10,20,30);
sum(10,20,30,40);
}
/*
* 所有方法一样,根据参数来区分
*
* */
public static void sum(int a,int b){
System.out.println(a+b);
}
public static void sum(int a,int b,int c){
System.out.println(a+b+c);
}
public static void sum(int a,int b,int c,int d){
System.out.println(a+b+c+d);
}
}
如有不足,请大佬多多指教,谢谢