1、要写好一个方法,必须明确两个东西:
- 返回值类型
- 参数列表(传几个参数、参数类型)
2.注意事项
方法不调用不执行。(想起上次的报错:“无法从静态上下文中引用非静态方法”)
方法与方法是平级关系,不能嵌套定义。
3.方法重载
在同一个类中,方法名相同,参数列表不同,与返回值类型无关。
参数列表不同:
A:参数个数不同
B:参数类型不同
4.方法重载能改变返回值类型吗?
能。因为与返回值类型无关。
5.重载举例
1)参数个数不同
/*需求:我要求数的和。两个数、三个数、四个数。
针对这种情况:方法的功能相同,参数列表不同的情况,为了见名知意,Java允许它们起一样的名字。
*/
/*
方法重载之——参数个数不同:
求数之和。
求两数之和;
求三数之和;
求四数之和。
并在main中测试。
*/
class Sum {
public static void main(String[] args) {
//jvm会根据不同的参数去调用不同的功能
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
System.out.println(sum(10,20,30,40));
}
//需求1:求两个数的和
public static int sum(int a,int b) {
return a + b;
}
//需求2:求三数的和
/*
public static int sum1(int a,int b,int c) {
return a + b + c;
}
*/
public static int sum(int a,int b,int c) {
return a + b + c;
}
//需求3:求四个数的和
/*
public static int sum2(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) {
return a + b + c + d;
}
}
2)参数类型不同
/*
方法重载之——参数类型不同:
比较两个数是否相等。参数类型分别为
两个byte类型,两个short类型,两个int类型,两个long类型
并在main中测试。
*/
class IsEqual{
public static void main(String[] args){
//测试
byte b1=3;
byte b2=3;
System.out.println(isEqual(b1,b2));
//测试
short s1=10;
short s2=9;
System.out.println(isEqual(s1,s2));
//测试
int i1=6666;
int i2=6666;
System.out.println(isEqual(i1,i2));
//测试
long l1=999999;
long l2=88888888;
System.out.println(isEqual(l1,l2));
}
//byte类型
public static boolean isEqual(byte x, byte y){
System.out.println("调了byte类型的:");
return x==y;
}
//short类型
public static boolean isEqual(short x, short y){
System.out.println("调了short类型的:");
return x==y;
}
//int类型
public static boolean isEqual(int x, int y){
System.out.println("调了int类型的:");
return x==y;
}
//long类型
public static boolean isEqual(long x, long y){
System.out.println("调了long类型的:");
return x==y;
}
}