目录
Java基础语法之方法
一、方法定义的格式
修饰符 返回值类型 方法名称(参数类型 参数名称,...){
方法体
return 返回值;
}
return
的两个作用:- 停止当前方法
- 将后面的结果数据返回值还给调用处
- 注意:
return
后面的返回值,必须与方法名称前面的返回值类型保持对应。
二、方法的三种调用格式
1. 单独调用
//格式:方法名称(参数);
public class DemoMethodDefine {
public static void main(String[] args) {
//单独调用
sum(10,20);
}
public static int sum(int a, int b){
System.out.println("我要执行了!");
int result = a + b;
return result;
}
}
2. 打印调用
//格式:System.out.println(方法名称(参数));
public class DemoMethodDefine {
public static void main(String[] args) {
//单独调用
//sum(10,20);
//打印调用
System.out.println(sum(10,20));
}
public static int sum(int a, int b){
System.out.println("我要执行了!");
int result = a + b;
return result;
}
}
3. 赋值调用
//格式:数据类型 变量名称 = 方法名称(参数);
public class DemoMethodDefine {
public static void main(String[] args) {
//单独调用
//sum(10,20);
//打印调用
//System.out.println(sum(10,20));
//赋值调用
int sumnumber = sum(10,20);
System.out.println(sumnumber);
}
public static int sum(int a, int b){
System.out.println("我要执行了!");
int result = a + b;
return result;
}
}
4.注意
- 返回值类型为
void
时,这种方法只能够单独调用。
三、方法的调用流程图解
四、对比有参数和无参数
- **有参数:**当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。
- **无参数:**一个方法不需要任何数据条件,自己就像能独立完成任务,就是无参数。
五、对比有返回值和无返回值
- 注意:
- 对于有返回值的方法,可以单独调用、打印调用或者赋值调用。
- 对于无返回值的方法,只能使用单独调用。
六、方法的简单练习
-
判断两数字是否相同
//法一: public class SameNums { public static void main(String[] args) { sameNums(10,10); //相同 sameNums(10,20);//不相同 } public static void sameNums(int a, int b){ if(a == b){ System.out.println("相同"); }else{ System.out.println("不相同"); } } } //法二: public class SameNums { public static void main(String[] args) { System.out.println(sameNums(10,20)); } public static boolean sameNums(int a, int b){ return a == b; } }
-
求出1到100的累加和
public class Sum100 { public static void main(String[] args) { System.out.println(sum1To100()); // 5050 } public static int sum1To100(){ int result = 0; for (int i = 1; i <= 100; i++) { result += i; } return result; } }
-
打印指定次数的
HelloWorld!
public class PrintHelloWorld { public static void main(String[] args) { printHelloWorld(10); printHelloWorld(20); } public static void printHelloWorld(int count){ for (int i = 0; i < count; i++) { System.out.println("HelloWorld!" + i); } } }
七、方法的注意事项
-
方法应该定义在类当中,但是不能在方法当中在定义方法,不能嵌套。
-
方法定义的前后顺序无所谓。
-
方法定义之后不会执行,一定要调用:单独调用、打印调用、赋值调用。
-
如果方法有返回值,那么必须写上
return 返回值;
,不能没有。 -
return
后面的返回值数据,必须和方法的返回值类型对应起来。 -
对于一个
void
方法,不能写return
后面的返回值,只能写自己。public static void method(){ return 10;//错误 return; //正确 }
-
对于
void
方法当中最后一行的return
可以不写。 -
一个方法中可以有多个
return
语句,但是必须保证同时只有一个会被执行到,两个return
不能连写。
八、方法重载的基本使用
-
**方法的重载(Overload):**多个方法的名称一样,但是参数列表不一样。
-
**好处:**只需要记住唯一一个方法名称,就可以实现类似的多个功能。
public class MethodOverload { public static void main(String[] args) { System.out.println(sum(10,20)); System.out.println(sum(10,20,30)); System.out.println(sum(10,20,30,40)); System.out.println(sum(10,20,30,40,50)); } public static int sum(int a, int b){ return a + b; } public static int sum(int a, int b, int c){ return a + b + c; } public static int sum(int a, int b, int c, int d){ return a + b + c + d; } public static int sum(int a, int b, int c, int d,int e){ return a + b + c + d + e; } }
九、方法重载的注意事项
-
方法重载与下列因素有关:
-
参数个数不同
public static int sum(int a, int b){ return a + b; } public static int sum(int a, int b, int c){ return a + b + c; }
-
参数类型不同
public static int sum(int a, int b){ return a + b; } public static int sum(double a, double b){ return (int)(a + b); }
-
参数的多类型顺序不同
public static int sum(int a, double b){ return (int)(a + b); } public static int sum(double a, int b){ return (int)(a + b); }
-
-
方法重载与下列因素无关:
-
与参数的名称无关
public static int sum(int a, int b){ return a + b; } //错误!与参数名称无关 public static int sum(int x, int y){ return x + y; }
-
与方法的返回值类型无关
public static int sum(int a, int b){ return a + b; } //错误!与返回值类型无关。 例如:单独调用sum(10,20);造成歧义。 public static double sum(int a, int b){ return a + b; }
-
十、重载的简单练习题
-
四种不同参数类型的方法
/* 题目要求: 比较两个数据是否相等。 参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试 */ public class MethodOverloadPractice { public static void main(String[] args) { byte b1=10, b2=10; short s1=10, s2=10; int i1=10, i2=10; long l1=10L, l2=10L; System.out.println(isSame(b1,b2)); System.out.println(isSame(s1,s2)); System.out.println(isSame(i1,i2)); System.out.println(isSame(l1,l2)); } public static boolean isSame(byte a, byte b){ System.out.println("compare byte"); return a == b; } public static boolean isSame(short a, short b){ System.out.println("compare short"); return a == b; } public static boolean isSame(int a, int b){ System.out.println("compare int"); return a == b; } public static boolean isSame(long a, long b){ System.out.println("compare long"); return a == b; } }
-
判断方法的正确重载
public static void open(){} //正确重载 public static void open(int a){} //正确重载 static void open(int a,int b){} //错误,与第八行冲突 public static void open(double a,int b){} //正确重载 public static void open(int a,double b){} //错误,与第六行冲突 public void open(int i,double d){} //错误,与第五行冲突 public static void OPEN(){} //正确,但不是有效重载 public static void open(int i,int j){} //错误,与第三行冲突