方法
-
定义
方法就是若干语句的功能集合。方法好比一个工厂。
蒙牛工厂 原料:奶牛,私聊,水
产出物:奶制品
参数就是原料,就是进入方法的数据。返回值(产出物),就是从方法中出来的数据。 -
定义方法的格式:
修饰符 返回值类型 方法名称(参数类型 参数名称){
方法体
return;
} -
格式详解
- 修饰符: public static 固定写法
- 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
- 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
- return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束,第一停止当前的方法,第二将后面的返回值还给调用处
-
定义方法的两个明确
- 需求:定义方法实现两个整数的求和计算。
- 明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
- 明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的 变量,由调用者调用方法时传递
- 需求:定义方法实现两个整数的求和计算。
public class Method_Demo2 {
public static void main(String[] args) {
// 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数
// 并接收方法计算后的结果,返回值
int sum = getSum(5, 6);
System.out.println(sum); }
/*定义计算两个整数和的方法
返回值类型,计算结果是int
参数:不确定数据求和,定义int参数.参数又称为形式参数 */
public static int getSum(int a, int b) {
return a + b;
}
}
程序执行,主方法 main 调用 getSum 方法,传递了实际数据 5和6 ,两个变量 a和b 接收到的就是实际参数,并 将计算后的结果返回,主方法 main 中的变量 sum 接收的就是方法的返回值
-
定义方法练习题:计算1+2+3…+100的和
- 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。
- 明确返回值:1~100的求和,计算后必然还是整数,返回值类型是int
- 明确参数:需求中已知到计算的数据,没有未知的数据,不定义参数
- 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。
public class Method_Demo4 {
public static void main(String[] args) {
//调用方法getSum
//并接收方法计算后的结果,整数
int sum = getSum();
System.out.println(sum); }
/* 定义计算1~100的求和方法
返回值类型,计算结果整数int
参数:没有不确定数据*/
public static int getSum() {
//定义变量保存求和
int sum = 0;
//从1开始循环,到100结束
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
return sum;
}
}
-
定义方法的注意事项
- 定义位置,类中方法外面。
- 返回值类型,必须要和 return 语句返回的类型相同,否则编译失败 。
- 不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
-
调用方法
- 三种格式
- 直接调用:直接写方法名进行调用,即 方法名称();
- 三种格式
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("方法被调用");
}
- 打印调用:
1. 在输出语句中调用方法, System.out.print(方法名称(参数));
public static void main(String[] args) {
System.out.println(getSum(5,6));
} public static int getSum(int a,int b) {
return a + b;
}
- 不能用输出语句调用 void 类型的方法。因为方法执行后没有结果,也就打印不出任何内容。
public static void main(String[] args) {
System.out.println(printHello());// 错误,不能输出语句调用void类型方法
} public static void printHello() {
System.out.println("Hello");
}
- 赋值调用::调用方法,在方法前面定义变量,接收方法返回值
数据类型 变量名称 =方法名称(参数);
public static void main(String[] args) {
int sum = getSum(5,6);
System.out.println(sum);
}
public static int getSum(int a,int b) {
return a + b;
}
- 方法调用图解
- 使用方法注意事项
- 方法应该定义在类中,但不能在方法中再定义方法,不能嵌套
- 方法定义的前后顺序无所谓
- 方法定义之后不会执行,如果想要执行,一定要调用。
- 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
- return后面的返回值数据,必须和方法的返回值类型对应起来。
- 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
- 对于void方法当中最后一行的return可以省略不计。
- 一个方法当中可以用多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。
方法重载
- 方法重载(Overload):指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返 回值类型无关;多个方法的名称一样,但是参数列表不一样。
- 参数列表:个数不同,数据类型不同,顺序不同。
- 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
public class Demo01MethodOverload {
public static void main(String[] args) {
/*System.out.println(sumTwo(10, 20)); // 30
System.out.println(sumThree(10, 20, 30)); // 60
System.out.println(sumFour(10, 20, 30, 40)); // 100*/
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)); // 找不到任何方法来匹配,所以错误!
sum(10, 20);
}
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) {
System.out.println("有2个参数的方法执行!");
return a + b;
}
// 错误写法!与方法的返回值类型无关
// public static double sum(int a, int b) {
// return a + b + 0.0;
// }
// 错误写法!与参数的名称无关
// public static int sum(int x, int y) {
// return x + y;
// }
public static int sum(double a, double b) {
return (int) (a + b);
}
public static int sum(int a, int b, int c) {
System.out.println("有3个参数的方法执行!");
return a + b + c;
}
public static int sum(int a, int b, int c, int d) {
System.out.println("有4个参数的方法执行!");
return a + b + c + d;
}
}
- 方法重载与下列因素有关
- 参数个数不同
- 参数类型不同
- 参数的多类型顺序不同
- 方法重载与下列因素无关
- 与参数的名称无关
- 与方法的返回值类型无关