方法(函数)
- 为什么要有方法
假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。
发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。
为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,
这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,
程序在需要发射炮弹时调用该方法即可。 - 什么是方法
方法就是完成特定功能的代码块
在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。 - 方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
- 方法的格式详细说明
(1): 修饰符 比较多,后面会详细介绍。目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者 - 如何写一个方法
两个明确
(1):返回值类型 明确功能结果的数据类型
(2):参数列表 你要传递几个参数,以及每一个参数的数据类型 - 方法调用(有明确返回值的调用) 可以用方法调用图解来理解
a:单独调用,一般来说没有意义,所以不推荐。
b:赋值调用,推荐方案。
c:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作 - 方法的注意事项
A: 方法不调用不执行
B: 方法与方法是平级关系,不能嵌套定义
C: 方法定义的时候参数之间用逗号隔开
D: 方法调用的时候不用在传递数据类型
E: 如果方法有明确的返回值,一定要由return带回一个值
package org.westos.demo;
public class MyDemo {
public static void main(String[] args) {
System.out.println("这是主方法");
add();
add();
}
public static void add(){
int num1=1;
int num2=10;
System.out.println(num1+num2);
}
}
package org.westos.demo;
public class MyDemo {
public static void main(String[] args) {
add();
add2(10,30);
int num1=50;
double num2=50;
add2(num1, num2);
double r= add3(10,50);
System.out.println(r);
double v = add3(2.6, 6.3);
System.out.println(v);
System.out.println(add3(3,9));
}
public static void add(){
int num=1;
int num2=2;
int sum=num+num2;
System.out.println(sum);
return;
}
public static void add2(int a,double b){
double sum=a+b;
System.out.println(sum);
}
public static double add3(double a, double b) {
double sum = a + b;
return sum;
}
}
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1 = scanner.nextInt();
System.out.println("请输入第二个整数");
int num2 = scanner.nextInt();
int max = getMax(num1, num2);
System.out.println("最大值是" + max);
}
public static int getMax(int a, int b) {
int max = a >= b ? a : b;
return max;
}
}
--------------------------------------------------------------------------------
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
public static void main(String[] args) {
int max2 = getMax2();
System.out.println("最大值是" + max2);
}
public static int getMax2() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1 = scanner.nextInt();
System.out.println("请输入第二个整数");
int num2 = scanner.nextInt();
int max = num1 >= num2 ? num1 : num2;
return max;
}
}
package org.westos.demo;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
int i = sc.nextInt();
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入第二个数");
int j = sc2.nextInt();
String xt=function(i,j);
System.out.println("这两个数" + xt+"相同的");
}
private static String function(int a,int b) {
return a==b?"是":"不是";
}
}
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个行数");
int num = scanner.nextInt();
showMultiplicationTable(num);
}
private static void showMultiplicationTable(int num) {
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
return;
}
}
方法重载概述和基本使用
- 方法重载概述
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关。 - 参数列表不同:
A:参数个数不同
B:参数类型不同
package org.westos.demo3;
public class MyDemo {
public static void main(String[] args) {
int sum1 = add(1, 2);
int sum2 = add(1, 2, 3);
int sum3 = add(1, 2, 3, 4);
double sum1 = add(1, 2.0);
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
System.out.println(sum1);
}
private static int add(int i, int i1, int i2, int i3) {
return i + i1 + i2 + i3;
}
private static int add(int i, int i1, int i2) {
return i + i1 + i2;
}
private static int add(int i, int i1) {
System.out.println("两个int类型的调用了");
return i + i1;
}
private static double add(int i, double i1) {
System.out.println("一个int类型一个double类型的调用了");
return i + i1;
}
}