1. 方法
1.1 方法概述
- 方法 : 具有特殊功能的代码集,提高代码复用率
- 方法先创建才能使用,方法定义
- 方法创建后要使用方法,必须手动调用执行, 方法调用
1.2 方法的定义和调用
-
定义
public static void 方法名 () { }
public static void isEvenNumber() { int a = 12; if (a % 2 == 0){ System.out.println("是偶数"); } }
-
调用
方法名 ();
public static void main(String[] args) { isEvenNumber(); // 调用方法 }
-
方法调用过程
从
main
方法中进入,然后进入isEvenNumber()
方法,执行完isEvenNumber()
方法,返回main
方法 -
demo 获取两个数中最大值
public static void getMax() { int a = 12; int b = 13; if (a > b) { System.out.println(a); } else { System.out.println(b); } } public static void main(String[] args) { getMax(); }
1. 3 带参数方法的定义和调用
-
定义
public static void 方法名 (数据类型 参数1, 数据类型 参数2···) { }
NOTE:
- 参数数据类型 参数名不能少
- 多个参数用
,
隔开
-
调用
方法名 (值1/变量1, 值2/变量2···);
NOTE:
- 方法调用时,参数的数据类型和个数要匹配
-
demo
public static void isEvenNumber (int num) { if (num % 2 == 0) { System.out.println(num + " 是偶数"); } else { System.out.println(num + " 是奇数"); } } public static void main(String[] args) { int a = 12; isEvenNumber(a); // 变量 isEvenNumber(13); // 常量 }
-
形参 和 实参
- 形参 方法定义中的参数 由
数据类型 变量名
组成 - 实参 方法调用时使用的参数,通常是
一个常量或某个变量
- 形参 方法定义中的参数 由
-
demo2
两个数打印最值
public static void getMax(int a, int b){ // a, b 形参 if (a > b) { System.out.println(a); } else { System.out.println(b); } } public static void main(String[] args) { int a = 12; getMax(a,13); // a, 13 实参 }
1.4 带返回值方法的定义与调用
-
定义
public static 返回值数据类型 方法名 (数据类型 参数1, 数据类型 参数2···) { return 数值; }
NOTE: return的数值 和 要求的返回值数据类型必须一致
-
调用
有变量接收返回值,否则方法返回值无意义
数据类型 变量 = 方法名 (值1/变量1, 值2/变量2···);
NOTE: 变量的数据类型 和 方法返回的数据类型必须一致
-
demo
public static boolean isEvenNumber(int num) { if (num % 2 == 0){ return true; } else { return false; } } public static void main(String[] args) { boolean res1 = isEvenNumber(12); // 变量的数据类型 和 方法返回的数据类型一致 System.out.println(res1); boolean res2 = isEvenNumber(13); System.out.println(res2); }
-
demo
两数之和
public static void main(String[] args) { int a = 13; int b = 99; int res = getTwoSum(a, b); System.out.println(res); } public static int getTwoSum(int a, int b) { return a + b; }
1.5 方法的注意事项
-
方法不能嵌套定义
-
void 无返回值 方法中可以不加return或者有return但return后面不返回数值
-
return 代表方法结束,后面代码不会执行
-
方法的通用格式
public static 返回值数据类型 方法名 (数据类型 参数1, 数据类型 参数2···) { 方法体; return 数值; }
- public static 修饰符
- 返回值数据类型:方法执行完返回数值 void不返回
- 方法名: 方法调用的标识
- 参数:
- 方法体:方法中处理过程
- return:
-
方法定义两个明确
明确返回值类型
明确参数类型和个数
1.6 方法重载
-
方法重载的含义,同一个类中多个方法的关系
-
满足方法重载关系的条件
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不同 参数的类型或数量不同
-
方法重载特点
- 方法重载只跟方法的定义有关,与方法调用无关
- 方法重载关系判断只与方法名和变量有关,和返回值无关
-
demo
调用时根据参数类型和个数调用方法
public static int getSum (int a, int b) { return a + b; } public static double getSum (double a, double b) { return a + b; } public static int getSum (int a, int b, int c) { return a + b + c; } public static void main(String[] args) { int res1 = getSum(12,13); int res2 = getSum(13, 14 , 15); double res3 = getSum(1.23, 2.35); System.out.println(res1); System.out.println(res2); System.out.println(res3); }
1.7 方法中参数传递
-
基本类型
方法中形式参数的改变,不影响方法外实际参数的值
public static void change (int num){ num = 200; } public static void main(String[] args) { int num = 100; System.out.println("方法调用前 num = " + num); change(num); System.out.println("方法调用后 num = " + num); }
-
引用类型
方法中形式参数的改变,影响方法外实际参数的值
引用类型传递参数地址public static void change (int[] nums) { nums[0] = 100; } public static void main(String[] args) { int[] nums = {1, 2 ,3}; System.out.println("调用方法前 nums[0] = " + nums[0]); // 1 change(nums); System.out.println("调用方法后 nums[0] = " + nums[0]); // 100 }
1.8 方法练习
-
数组遍历 一行打印
System.out.print()不换行打印
public static void getArr (int[] nums) { System.out.print("["); for (int i = 0; i < nums.length - 1; i++) { System.out.print(nums[i]); System.out.print(", "); } System.out.print(nums[nums.length - 1]); System.out.print("]"); } public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5}; getArr(nums); }
-
获取数组最值
public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5, 6, 7}; System.out.println(getArrMax(nums)); } public static int getArrMax(int[] nums) { int res = nums[0]; for (int x : nums) { res = res > x ? res : x; } return res; }