-
方法格式的定义 使用
教学目标
- 根据不同的需求定义相应的方法完成
- 能够知道方法定义和通用格式
- 能够使用方法完成两个较大数的获取并调用方法
- 能够使用方法完成数组遍历并调用方法
- 能够使用方法完成获取数组最大值并调用方法
第一章 方法入门
1.1 求两个int数据之和
public class Demo01 { public static void main(String[] args) { //定义2个int变量a和b,并初始化 int a = 10, b = 20; //求和 int sum = a + b; //打印结果 System.out.println(sum); int c = 100, d = 200; int sum2 = c + d; System.out.println(sum2); //... } }
以上代码虽然可以求出两个int数据的和,但是代码重复了,可以使用方法解决
1.2 定义方法求两个int数据之和
public class Demo02 { public static void main(String[] args) { //定义2个int变量a和b,并初始化 int a = 10, b = 20; //调用方法完成求和 int sum = getSum(a, b); //打印结果 System.out.println(sum); int c = 100, d = 200; int sum2 = getSum(c, d); System.out.println(sum2); } //定义方法完成计算两个int数据之和 public static int getSum(int a, int b) { int result = a + b; return result; } }
1.3 方法的说明
/* 定义方法需要考虑哪些问题? 1.方法名称: 就是给方法起个名字,使用名字调用方法 2.是否有未知数据参加运算: 并不清楚具体的对那两个数求和,但是调用方法时肯定会给两个int数据, 所以定义两个int变量接收需要求和的数据 3.是否产生结果: 两个int数据的和一定是有结果的,而且结果也必然是int类型 需要注意的地方: 1.public static: 目前固定写法 2.int: 方法内部产生的结果的类型 3.return result: 把结果result返回给调用的地方 */ //定义方法完成计算两个int数据之和 public static int getSum(int a, int b) { int result = a + b; return result; }
1.4 方法定义格式练习
根据以上关于方法的说明,完成方法的定义,不需要完成方法内部的功能代码 1.定义方法,计算两个double数据的最小值 2.定义方法,判断一个字符是否是字母 3.定义方法,判断一个int数字是否是偶数 4.定义方法,计算一个int数组的和 5.定义方法,计算两个int数组是否相同
1.5 方法调用格式练习
定义完毕以上方法后,我们方法方法不调用不执行,如何调用方法呢? 方法名称(参数列表...)
第二章 方法详解
2.1 定义方法的格式详解
修饰符 返回值类型 方法名(参数列表){ //代码省略... return 结果; }
-
修饰符: public static 固定写法
-
返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
-
参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
-
return:将方法执行后的结果带给调用者,方法执行到
return
,整体方法运行结束
小贴士:return 结果; 这里的"结果"在开发中,我们正确的叫法成为方法的返回值
2.2 定义方法的三个明确
-
明确方法名称:给方法起个名字,方便调用,只要符合标识符规则就可以,尽量做到见名知意
-
明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
-
明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递
2.3 方法练习一
2.3.1 计算两个int数据的最大值
/* 方法格式的详细介绍: 1.概念: 就是功能,把一段代码,使用{}括起来,起个名字,方便使用 2.格式: 修饰符 返回值类型 方法名称(参数列表...){ //方法体; return 结果数据; } 3.格式解释: (1)修饰符: public static 目前是固定写法,先记住 (2)返回值类型: 方法内部产生的结果(给调用处)的数据的类型 (3)方法名称: 就是一个标识符,方便调用方法 (4)参数列表: 定义一个或者多个变量,用来接收调用者调用方法时,传递的具体数据的 (5)return 结果数据: 把最终方法内部计算的结果数据,返回给调用处/者 4.方法的调用: 把方法调用后,产生的结果数据保存到左侧的变量中 数据类型 变量名称 = 方法名称(参数列表...); 5.考虑三要素: (1)方法名称: (2)是否有未知数据参加运算: (3)是否产生结果数据: 6.练习: 定义方法计算两个int数据的最大值 */ public class Demo03MethodMax { public static void main(String[] args) { System.out.println("main...start...."); int m = 50, n = 100; //调用方法,传递两个int变量 int max = getMax(m, n); System.out.println("最大值: " + max); System.out.println("main...end..."); } /* 定义方法计算两个int数据的最大值 三要素: (1)方法名称: getMax (2)是否有未知数据参加运算: int a, int b (3)是否产生结果数据: int */ public static int getMax(int a, int b) { //使用三元运算符计算2个int数据的最大值 int result = (a > b) ? a : b; return result;//把结果数据result返回给调用处 } }
2.3.2 计算一个int数据是否是偶数
package com.itheima03; /* 计算一个int数据是否是偶数 */ public class Demo04MethodOu { public static void main(String[] args) { System.out.println("main....start...."); int num = 100; //调用方法isOu,传递num,获取结果保存到boolean变量result中 boolean result = isOu( num ); System.out.println(num + " 是否是偶数? " + result); System.out.println("main....end...."); } /* 计算一个int数据是否是偶数 三要素: (1)方法名称: isOu (2)是否有未知数据参加运算: int num (3)是否产生结果数据: boolean */ public static boolean isOu(int num) { //使用三元运算符,计算num是否是偶数 boolean result = (num % 2 == 0) ? true : false; return result;//把结果数据result返回给调用这 } }
2.4 方法练习二
2.4.1 定义方法,打印从数字1到指定大于1的int数字范围内的所有数字
package com.itheima03; /* 需求: 定义方法,打印从数字1到指定大于1的int数字范围内的所有数字 三要素: (1)方法名称: (2)是否有未知数据参加运算: (3)是否产生结果数据: 注意: 1.分析需求时,发现方法内部没有产生具体的结果数据,返回值类型必须写成void 2.方法内部可以写return ; 但是建议省略,绝对不能写 return 数据; */ public class Demo05PrintNum { public static void main(String[] args) { System.out.println("main...start..."); int a = 10; printNum(a); System.out.println("main...end..."); } /* 定义方法,打印从数字1到指定大于1的int数字范围内的所有数字 三要素: (1)方法名称: printNum (2)是否有未知数据参加运算: int n (3)是否产生结果数据: 没有具体的结果数据,此时返回值类型必须写为void */ public static void printNum(int n) { //for循环 for (int i = 1; i <= n; i++) { System.out.println(i); } //return ;//结束方法,返回到方法的调用处,但是并没有带回具体的结果数据,建议省略 } }
2.4.2 定义方法,将一个int数字指定给一个int数组的每个元素
package com.itheima03; import java.util.Arrays; /* 需求: 定义方法,将一个int数字指定给一个int数组的每个元素 三要素: (1)方法名称: (2)是否有未知数据参加运算: (3)是否产生结果数据: 注意: 1.分析需求时,发现方法内部没有产生具体的结果数据,返回值类型必须写成void 2.方法内部可以写return ; 但是建议省略,绝对不能写 return 数据; */ public class Demo06FillArray { public static void main(String[] args) { System.out.println("main...start..."); int[] arr = new int[10]; System.out.print("数组元素默认值: "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); //调用fillArray方法,把数组中的所有元素值都修改为1000 int num = 1000; fillArray(arr,num); System.out.print("数组元素修改后的值: "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); System.out.println("main...end..."); } /* 定义方法,将一个int数字指定给一个int数组的每个元素 三要素: (1)方法名称: fillArray (2)是否有未知数据参加运算: int[] array,int value (3)是否产生结果数据: 没有具体的结果数据,此时返回值类型必须写为void */ public static void fillArray(int[] array, int value) { for (int i = 0; i < array.length; i++) { array[i] = value; } return ;//结束方法,返回到方法的调用处,建议省略 } }
2.4.3 定义方法,介绍黑马程序员昌平校区的地址
"昌平区北七家镇七北路42号TBD云集中心2号楼3单元3层"
package com.itheima03; /* 需求: 定义方法,介绍黑马程序员昌平校区的地址 "昌平区北七家镇七北路42号TBD云集中心2号楼3单元3层" 三要素: (1)方法名称: print (2)是否有未知数据参加运算: 没有未知数据参加运算,没有参数,不用写参数列表,但是必须保留() (3)是否产生结果数据: 没有具体的结果数据,此时返回值类型必须写为void 注意: 1.分析需求时,发现方法内部没有产生具体的结果数据,返回值类型必须写成void 2.方法内部可以写return ; 但是建议省略,绝对不能写 return 数据; 没有返回值没有参数的方法调用 方法名称(); */ public class Demo07PrintInfo { public static void main(String[] args) { System.out.println("main...start..."); //调用方法,打印信息 print(); System.out.println("main...end..."); } //定义方法,介绍黑马程序员昌平校区的地址 public static void print() { System.out.println("昌平区北七家镇七北路42号TBD云集中心2号楼3单元3层"); return ;//结束方法,返回到方法的调用处 } }
第三章 方法知识补充
3.1 定义方法的注意事项
-
方法不能嵌套定义
public class MethodDemo { public static void main(String[] args) { } public static void methodOne() { public static void methodTwo() { // 这里会引发编译错误!!! } } }
-
返回值类型,必须要和
return
语句返回的类型相同,否则编译失败 。
// 返回值类型要求是int public static int getSum() { return 5;// 正确,int类型 return 1.2;// 错误,类型不匹配 return true;// 错误,类型不匹配 }
-
不能在
return
后面写代码,return
意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
public static int getSum(int a,int b) { return a + b; System.out.println("Hello");// 错误,return已经结束,这里不会执行,无效代码 }
-
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
public class MethodDemo { public static void main(String[] args) { } public static void methodTwo() { //return 100; 编译错误,因为没有具体返回值类型 return; //System.out.println(100); return语句后面不能跟数据或代码 } }
3.2 方法的调用方式
3.2.1 有返回值的方法调用
/* 有返回值的方法的调用 1.赋值调用: 把调用有返回值方法的返回的结果赋值给左侧的变量 ---推荐使用--- 数据类型 变量名称 = 方法名称(参数列表....) 2.打印/输出调用: 把调用有返回值方法的返回的结果直接交给输出语句 System.out.println(方法名称(参数列表....)); 3.单独/独立/直接调用: 直接调用有返回值方法,对结果数据没有任何处理(丢失了结果) ---不推荐使用--- 方法名称(参数列表....); */ public class Demo05MethodInvoke { public static void main(String[] args) { //定义2个int变量,并初始化 int m = 10, n = 20; //1.赋值调用: 传递变量 int sum = getSum(m, n); System.out.println("和: " + sum); //复制调用后: 可以对结果数据进行其它相关处理 //1.赋值调用: 传递常量 int sum2 = getSum(100, 200); System.out.println("和: " + sum2); System.out.println("-----------------"); //2.输出调用: 传递变量 System.out.println("和: " + getSum(m, n)); System.out.println("和: " + getSum(100, 200)); System.out.println("-----------------"); //3.单独/独立/直接调用: 传递变量 getSum(m,n); //3.单独/独立/直接调用: 传递常量 getSum(100,200); } //定义方法,计算2个int数据的和 public static int getSum(int a, int b) { int sum = a + b; return sum; } }
3.2.2 无返回值的方法调用
/* 无返回值的方法调用方式 1.单独/独立/直接调用: 直接调用有返回值方法,对结果数据没有任何处理 ---只能使用这种方式--- 方法名称(参数列表....); 2.赋值调用: 把调用有返回值方法的返回的结果赋值给左侧的变量 ---代码语法格式错误--- 3.打印/输出调用: 把调用有返回值方法的返回的结果直接交给输出语句 ---代码语法格式错误--- */ public class Demo06MethodInvoke { public static void main(String[] args) { //1.单独/独立/直接调用 print(); //2.赋值调用: 错误的 //void v = print();//void根本就不是数据类型 //3.打印/输出调用: 错误的 //System.out.println(print()); } //定义方法,介绍黑马程序员昌平校区的地址 public static void print() { System.out.println("昌平区北七家镇七北路42号TBD云集中心2号楼3单元3层"); return ;//结束方法,返回到方法的调用处 } }