Java零基础小白入门教程第五次课_方法
Posted teayear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java零基础小白入门教程第五次课_方法相关的知识,希望对你有一定的参考价值。
day05_java基础
课程目标
1. 【理解】什么是方法
2. 【掌握】方法的格式
3. 【理解】方法的执行流程
4. 【掌握】方法的案例
5. 【理解】方法的重载
6. 【理解】方法参数的传递
一.方法概述
什么是方法
方法(method)完成某一个特定功能的代码块
方法基本使用
将资料中给大家提供的打怪物发射炮弹重复的代码,把一些重复代码进行抽取(封闭)思想.
-
抽取代码
public static void fire() System.out.println("准备发射5发炮弹"); System.out.println("发射第1发炮弹* * * *"); System.out.println("发射第2发炮弹* * * *"); System.out.println("发射第3发炮弹* * * *"); System.out.println("发射第4发炮弹* * * *"); System.out.println("发射第5发炮弹* * * *"); System.out.println("发射5发炮弹结束");
-
在main方法中使用
public static void main(String[] args) System.out.println("游戏开始..."); System.out.println("看到了一个怪物...血牙野猪..."); //调用方法,发射炮弹 fire(); System.out.println("...血牙野猪被打倒...");
-
调用格式
方法名();
-
注意
方法调用过程图解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rgs5DM7C-1670943983500)(assets/image-20201104172623858.png)]
定义方法格式
修饰符 返回值类型 方法名(参数列表)
//代码省略...
return 结果;
-
修饰符
: public static 目前固定写法 -
返回值类型
: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者 -
参数列表
: 方法在运算过程中的未知数据,调用者调用方法时传递 -
return
: 将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束
小贴士:return 结束; 这里的结束在开发中,我们正确的叫法成为方法的返回值
二.方法类型
定义方法的两个明确
-
明确参数列表
该方法在完成一个功能时,需要的参数有几个,参数的类型是什么,需要在我们明确给出的。
-
明确返回值类型
方法的功能完成之后,是否有结果返回,如果有,使用return 将结果返回给调用者。没有返回值void
什么情况下,我们用return, 除了void以外的都要有return
案例一
-
需求
在控制台打印10次HelloWorld
-
分析
-
代码实现
public class MethodDemo01 public static void main(String[] args) //调用方法printHelloWorld打印10次HelloWorld printHelloWorld(); public static void printHelloWorld() for (int i = 0; i < 10; i++) System.out.println("HelloWorld");
案例二
-
需求
实现不定次数打印HelloWorld
-
分析
-
代码实现
public class MethodDemo02 public static void main(String[] args) //调用方法printHelloWorld,传递整数 printHelloWorld(10); /* 定义打印HelloWorld方法 返回值类型,计算没有结果 void 参数:不确定打印几次 */ public static void printHelloWorld(int n) for (int i = 0; i < n; i++) System.out.println("HelloWorld");
案例三
-
需求
定义方法实现两个整数的求和计算
-
分析
-
代码实现
public class MethodDemo03 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;
-
流程图解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxCCLroO-1670943983502)(assets/image-20201103233726028.png)]
案例四
-
需求
定义方法实现比较两个整数是否相同
-
分析
-
代码实现
public class MethodDemo04 public static void main(String[] args) //调用方法compare,传递两个整数 //并接收方法计算后的结果,布尔值 boolean bool = compare(3, 8); System.out.println(bool); /* 定义比较两个整数是否相同的方法 返回值类型,比较的结果布尔类型 参数:不确定参与比较的两个整数 */ public static boolean compare(int a, int b) if (a == b) return true; else return false;
案例五
-
需求
定义方法实现:计算1+2+3…+100的和
-
分析
-
代码实现
public class MethodDemo05 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;
TODO: 无参无返回值的方法 无参有返回值的方法
有参无返回值的方法 有参有返回值的方法
试着去写返回值类型各种情况, 试着去写参数列表的各种数据类型
三.方法小结
定义方法注意事项
-
定义位置:类中方法外,不能嵌套定义
-
方法必须先定义,再使用
-
void表示无返回值,可以省略return,也可以单独的书写return
-
不能在return后面写代码,return意味着方法结束,所有后面的代码记永远都不会执行,属于无效代码
-
定义方法时()中的参数,我们称之为:形式参数,在调用该方法时传递的参数,我们称之为:实际参数
-
你可以不接收返回的值,但你必须给出参数
调用方法三种形式
-
直接调用
:直接写方法名调用public static void main(String[] args) print(); public static void print() System.out.println("方法被调用");
-
赋值调用
:调用方法,在方法前面定义变量,接收方法返回值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;
-
输出语句调用
:在输出语句中调用方法public static void main(String[] args) System.out.println(getSum(5,6)); public static int getSum(int a,int b) return a + b;
四.重载
4.1方法重载概述
在同一个类中,具有相同的方法名, 参数列表不同(参数的个数及类型不同),与返回值无关
参数列表:个数不同,数据类型不同,顺序不同。
重载方法调用:JVM通过方法的参数列表,调用不同的方法。
4.2重载案例
案例一
-
需求
使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)
-
思路
①定义比较两个数字的是否相同的方法compare()方法,参数选择两个int型参数
②定义对应的重载方法,变更对应的参数类型,参数变更为两个long型参数
③定义所有的重载方法,两个byte类型与两个short类型参数
④完成方法的调用,测试运行结果
-
代码实现
public class MethodTest1 public static void main(String[] args) //调用方法 System.out.println(compare(10, 20)); System.out.println(compare((byte) 10, (byte) 20)); System.out.println(compare((short) 10, (short) 20)); System.out.println(compare(10L, 20L)); //int public static boolean compare(int a, int b) System.out.println("int"); return a == b; //byte public static boolean compare(byte a, byte b) System.out.println("byte"); return a == b; //short public static boolean compare(short a, short b) System.out.println("short"); return a == b; //long public static boolean compare(long a, long b) System.out.println("long"); return a == b;
案例二
判断哪些方法是重载关系
public static void open()
public static void open(int a)
public static void open(int a,int b)
public static void open(double a,int b)
public static void open(int a,double b)
public void open(int i,double d)
public static void OPEN()
public static void open(int i,int j)
案例三
-
需求
模拟输出语句中的println方法的效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println
-
代码实现
public class MethodTest2 public static void println(byte a) System.out.println(a); public static void println(short a) System.out.println(a); public static void println(int a) System.out.println(a); public static void println(long a) System.out.println(a); public static void println(float a) System.out.println(a); public static void println(double a) System.out.println(a); public static void println(char a) System.out.println(a); public static void println(boolean a) System.out.println(a); public static void println(String a) System.out.println(a);
五.参数传递
方法参数传递基本类型
-
测试代码:
public class ArgsDemo01 public static void main(String[] args) //实际参数 int number = 100; System.out.println("调用change方法前:" + number); //调用方法 change(number); System.out.println("调用change方法后:" + number); //形式参数 public static void change(int number) number = 200;
-
结论:
基本数据类型的参数,形式参数的改变,不影响实际参数
-
结论依据:
每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDkovCjF-1670943983504)(assets/方法传参-基本数据类型.png)]
方法参数传递引用类型
-
测试代码
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;
-
结论
对于引用类型的参数,形式参数的改变,影响实际参数的值
-
结论依据
引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SYqAYPZJ-1670943983505)(assets/方法传参-引用数据类型.png)]
数组遍历
-
需求
设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
-
思路
-
因为要求结果在一行上输出,所以这里需要在学习一个新的输出语句System.out.print(“内容”);
System.out.println(“内容”); 输出内容并换行
System.out.print(“内容”); 输出内容不换行
System.out.println(); 起到换行的作用 -
定义一个数组,用静态初始化完成数组元素初始化
-
定义一个方法,用数组遍历通用格式对数组进行遍历
-
用新的输出语句修改遍历操作
-
调用遍历方法
-
-
代码实现
public class MethodTest3 public static void main(String[] args) //定义一个数组,用静态初始化完成数组元素初始化 int[] arr = 11, 22, 33, 44, 55; //调用方法 printArray(arr); // 定义一个方法,用数组遍历通用格式对数组进行遍历 /* 两个明确: 返回值类型:void 参数:int[] arr */ public static void printArray(int[] arr) System.out.print("["); for(int x=0; x<arr.length; x++) if(x == arr.length-1) System.out.print(
以上是关于Java零基础小白入门教程第五次课_方法的主要内容,如果未能解决你的问题,请参考以下文章
🤖全套Java教程_Java基础入门教程,零基础小白自学Java必备教程🙋♂️002 # 第三单元 运算符方法入门 #