在了解对象与类之前,首先先学习方法
01.方法概述概述:说白了就是用来存储一段代码
特点:
方法只有先定义才能使用
方法不会自动执行,必须调用才会执行(方法不调用,不会执行)
02.方法定义和调用(无参数无返回值)格式:
public static void 方法名(){
代码块;
}
调用:方法名();
方法必须先定义,在调用
方法需要定义在类中,方法外(方法和方法之间是平级关系,不允许嵌套)
public class MethodDemo {
public static void main(String[] args) {
System.out.println("开始");
//调用方法
isEvenNumber();
System.out.println("结束");
}
//需求:定义一个方法,在方法中定义一个变量,判断该数据是否是偶数
public static void isEvenNumber() {
//定义变量
int number = 10;
number = 9;
//判断该数据是否是偶数
if(number%2 == 0) {
System.out.println(true);
} else {
System.out.println(false);
}
}
}
03.带参数方法定义和调用(有参数无返回值)
public static void 方法名(参数){
代码块;
}
定义方法参数:数据类型 变量名
调用:
方法名(参数);
注意:调用方法时,参数个数,参数类型,参数顺序要与定义的参数一致
public class MethodDemo {
public static void main(String[] args) {
//常量值的调用
isEvenNumber(10);
//变量的调用
int number = 10;
isEvenNumber(number);
}
//需求:定义一个方法,该方法接收一个参数,判断该数据是否是偶数
public static void isEvenNumber(int number) {
if(number%2 == 0) {
System.out.println(true);
} else {
System.out.println(false);
}
}
}
04.形参和实参
形参:方法定义中的参数,等同于变量,如果有多个参数就使用逗号隔开
实参:方法调用中的参数(一般都是常量值,或者变量)
05.带返回值方法定义和调用定义格式:
public static 返回值类型 方法名(形参){
代码块;
return 返回值;
}
注意:返回值的类型要和返回值类型相匹配,否则会报错
直接调用:方法名(实参);
赋值调用:数据类型 变量名=方法名(实参);
输出调用: System.out.println(方法名(实参));
public class Test3Method {
public static void main(String[] args) {
// 调用方法:
// 直接调用: 没有意义
isEvenNumber(10);// 返回的结果: true
System.out.println("--------");
// 赋值调用: 开发中常用
boolean res1 = isEvenNumber(10);
System.out.println("res1:"+res1);// res1:true
System.out.println("--------");
// 输出调用: 自己测试,讲课常用
System.out.println(isEvenNumber(10));// true
}
// 定义一个方法,接收一个数据,然后判断该数据是否是偶数,返回boolean值
public static boolean isEvenNumber(int num) {
if (num % 2 == 0) {
return true;
} else {
return false;
}
}
}
06.方法的注意事项
方法要先定义才能调用
方法不调用不会执行
方法不能嵌套方法(方法和方法之间是平级关系)
无返回值方法,方法体中一般不加return语句,如果要加return语句,只能怎么写:return:,表示结束方法的执行,并且该return后面不可以添加代码。
public static void method(){
方法体;
[return;]// 表示结束方法的执行
// return后面不能再加代码,否则会报错
}
通用格式:
public static 返回值类型 方法名(数据类型 变量名,数据类型 变量名,...){
方法体;
[return 返回值;]
}
-
返回值类型: 其实就是返回值的数据类型,如果没有返回值,返回值类型就写void
-
形参: 定义变量,多个形参以逗号隔开,如果没有形参,小括号就空着
-
方法体: 该方法的功能代码
-
返回值: 方法执行完毕后需要返回的数据
-
return: 把返回值返回到调用方法的位置; 然后结束方法的执行
-
方法分类:
-
无参数无返回值
-
无参数有返回值
-
有参数无返回值
-
有参数有返回值
-
-
调用方法:
-
无返回值的方法
-
直接调用: 方法名(实参);
-
-
有返回值的方法
-
直接调用: 方法名(实参);
-
赋值调用: 数据类型 变量名 = 方法名(实参);
-
输出调用: System.out.println(方法名(实参));
-
-
-
定义方法的套路:
-
明确返回值类型
-
明确形参
-
明确方法名
-
明确方法体
-
-
调用方法的套路:
-
明确调用的位置
-
明确方法是否有返回值
-
明确调用方法的方式
-
public class Test4Method {
public static void main(String[] args) {
// 调用print1方法
print1();
System.out.println("--------");
// 调用print2方法
print2(5);
System.out.println("--------");
// 调用getSum1方法
getSum1();
int sum1 = getSum1();
System.out.println(getSum1());// 5050
System.out.println("--------");
// 调用getSum2方法
System.out.println(getSum2(100));
}
// 需求: 定义一个方法,打印10次HelloWorld, 无参数无返回值的方法
public static void print1() {
// 快捷键: 循环次数.fori
for (int i = 0; i < 10; i++) {
System.out.println("HelloWorld");
}
}
// 需求: 定义一个方法,打印n次HelloWorld,n由调用者传入 有参数无返回值的方法
public static void print2(int n) {
for (int i = 0; i < n; i++) {
System.out.println("HelloWorld");
}
}
// 需求: 定义一个方法,计算1-100之间数的累加和,并返回 无参数有返回值的方法
public static int getSum1() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
// 返回累加和
return sum;
}
// 需求: 定义一个方法,计算1-n之间数的累加和,并返回,n由调用者传入 有参数有返回值的方法
public static int getSum2(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
// 返回累加和
return sum;
}
}
08.方法重载
概述:在同一个类中,出现了多个同名的方法,并且参数列表不同,与返回值类型,修饰符无关
参数列表不同:参数类型不同,参数个数不同,以及同类型参数顺序不同,与参数没有关系
在调用的时候,Java虚拟机会通过参数的不同来区分同名的方法
public class MethodDemo {
public static void main(String[] args) {
//调用方法
int result = sum(10,20);
System.out.println(result);
double result2 = sum(10.0,20.0);
System.out.println(result2);
int result3 = sum(10,20,30);
System.out.println(result3);
}
//需求1:求两个int类型数据和的方法
public static int sum(int a, int b) {
return a + b;
}
//需求2:求两个double类型数据和的方法
public static double sum(double a, double b) {
return a + b;
}
//需求3:求三个int类型数据和的方法
public static int sum(int a, int b, int c) {
return a + b + c;
}
public static void sum(int a, String b) {
}
public static void sum(String a, int b) {
}
}
09.方法参数传递基本类型
基本类型:对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
public class ArgsDemo01 {
public static void main(String[] args) {
int number = 100;
System.out.println("调用change方法前:" + number);// 100
change(number);
System.out.println("调用change方法后:" + number);// 100
}
public static void change(int number) {
number = 200;
}
}
10.方法参数传递引用类型
引用类型:对于引用类型的参数,形式参数的改变,影响实际参数的值
public class ArgsDemo02 {
public static void main(String[] args) {
int[] arr = {10, 20, 30};
System.out.println("调用change方法前:" + arr[1]);// 20
change(arr);
System.out.println("调用change方法后:" + arr[1]);// 200
}
public static void change(int[] arr) {
arr[1] = 200;
}
}



