• 【Java基础】方法



    个人简介

    > 📦个人主页:轻狂客_零度的主页
    > 🏆学习方向:JAVA后端开发 
    > 📣种一棵树最好的时间是十年前,其次是现在!
    > ⏰往期文章:【Java基础】数组
    > 🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。

    前言

    方法是什么

    方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用

    使用方法的好处是

    1. 提高了代码的复用性

    2. 让程序的逻辑更清晰

    活动地址:CSDN21天学习挑战赛

    目录

    前言

    1. 方法定义, 调用

    ​编辑2. 方法使用的常见问题

    方法常见问题

    3. 方法案例

    简易计算器的实现

    4. 方法调用的内存图

    5. 方法的参数传递机制

    5.1 基本类型的参数传递

    5.2 引用类型的参数传递

    6. 方法重载

    7.方法重写

    8.四种权限修饰符

    9.练习: 方法调用的顺序

    10.补充知识: 单独使用return关键字

    11.拓展 : 方法的递归


    1. 方法定义, 调用

     1.1 方法的完整格式

      修饰符 返回值类型 方法名(参数列表){ 方法体 }

     1.2 如何确定我们要调用哪个方法呢?

      方法名+参数列表

      1.3 一个方法被调用,就会执行这个方法的功能,执行完毕就返回到方法被调用的位置,在第几行调        用,程序就返回到第几行继续向下执行
      如果这个方法有返回值,我们有两种选择:
      1). 选择只执行功能,不接收返回值,不再继续使用这个方法的结果
      2). 选择在方法调用的位置接收这个方法的返回值,接收到的返回值可以在方法外继续使用

    2. 方法使用的常见问题

    方法常见问题

    1. 方法的编写顺序无所谓。

    2. 方法与方法之间是平级关系,不能嵌套定义。

    3. 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。

    4. return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。

    5. 方法不调用就不执行, 调用时必须严格匹配方法的参数情况。

    6. 有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用。

    3. 方法案例

    简易计算器的实现

    1. package com.example.review;
    2. import java.util.Scanner;
    3. /*本类用于实现简易计算器*/
    4. public class TestCalc {
    5. public static void main(String[] args) {
    6. f0();//调用一个实现计算器的方法
    7. }
    8. private static void f0() {
    9. while(true){//死循环,让用户可以一直算
    10. //1.提示并接收用户输入的两个数
    11. System.out.println("请您输入要计算的第1个数:");
    12. int a = new Scanner(System.in).nextInt();
    13. System.out.println("请您输入要计算的第2个数:");
    14. int b = new Scanner(System.in).nextInt();
    15. //2.提示并接收用户输入的运算符
    16. System.out.println("请您输入要计算的运算符,支持:+ - * / :");
    17. String s = new Scanner(System.in).nextLine();
    18. //3.根据运算符的不同,调用不同的计算方法进行计算并输出结果
    19. switch(s){
    20. case "+" : f1(a,b);break;
    21. case "-" : f2(a,b);break;
    22. case "*" : f3(a,b);break;
    23. case "/" : f4(a,b);break;
    24. default: System.out.println("您输入的运算符不正确!");
    25. }
    26. //4.询问用户是否想继续运算
    27. System.out.println("如果想退出,请输入1,继续请输入2");
    28. int flag = new Scanner(System.in).nextInt();
    29. if(flag == 1){break;}
    30. }
    31. }
    32. private static void f4(int a, int b) {//将拿到的两个数a和b做除法运算并打印结果
    33. System.out.println(a+"和"+b+"做除法的结果为:"+(a/b));
    34. }
    35. private static void f3(int a, int b) {//将拿到的两个数a和b做乘法运算并打印结果
    36. System.out.println(a+"和"+b+"做乘法的结果为:"+(a*b));
    37. }
    38. private static void f2(int a, int b) {//将拿到的两个数a和b做减法运算并打印结果
    39. System.out.println(a+"和"+b+"做减法的结果为:"+(a-b));
    40. }
    41. private static void f1(int a, int b) {//将拿到的两个数a和b做加法运算并打印结果
    42. System.out.println(a+"和"+b+"做加法的结果为:"+(a+b));
    43. }
    44. }

    4. 方法调用的内存

     方法没有被调用的时候,在方法区中的字节码文件中存放

     方法被调用的时候,需要进入到栈内存中运行

    方法的运行区域在哪里?

    栈内存 

    5. 方法的参数传递机制

    5.1 基本类型的参数传递

    如果方法的参数类型是基本类型,传入的是实际的字面值,如果是引用类型,传入的是地址值

     形参:形式意义上的参数,比如方法参数列表的参数名,光看参数名是无法确定这个变量的值是多少的
     实参:实际意义上的参数,比如我们的局部变量,比如成员变量,比如调用方法时传入的数字

    5.2 引用类型的参数传递

    基本类型和引用类型的参数在传递的时候有什么不同?

    1). 都是值传递。

    2). 基本类型的参数传输存储的数据值。

    3). 引用类型的参数传输存储的地址值。

    6. 方法重载

    1. 我们根据方法名+参数列表确定具体调用哪个方法
    2. 方法的重载:在同一个类中,存在方法名相同,但参数列表不同的方法
    3. 如果在同类中,同名方法的参数个数不同,一定构成重载
    4. 如果在同类中,同名方法的参数个数相同,需要查看对应位置上参数的类型,而不是参数名,与参数名无关

    比如:
    (int a,String b)与(int b,String a)–不构成重载
    (int a,String b)与(String a,int b)–构成重载

    方法重载的作用 ?

    可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
    使用方法重载的好处 ?
    对于相似功能的业务场景:可读性好,方法名称相同提示是同一类型的功能,通过
    形参不同实现功能差异化的选择,这是一种专业的代码设计。

    7.方法重写

    子类继承了父类以后,想要在不改变父类代码的情况下,实现功能的修改与拓展
    重写遵循的规则: 两同 两小 一大
    一大: 子类方法的修饰符权限 >= 父类方法的修饰符权限
    两同: 方法名与参数列表与父类方法保持一致
    两小: 子类方法的返回值类型 <= 父类方法的返回值类型,注意:这里的<=说的是继承关系,不是值的大小
    子类方法抛出的异常类型 <= 父类方法抛出的异常类型

    8.四种权限修饰符

    权限修饰符速查表
    修饰符同类同包子类不同包(无关类)
    publicYESYESYESYES
    protectedYESYESYESNO
    默认YESYESNONO
    privateYESNONONO

    9.练习: 方法调用的顺序

    1. package com.example.basic;
    2. /*本类用于测试方法的调用*/
    3. public class MethodDemo {
    4. //1.创建程序的入口函数main()
    5. public static void main(String[] args) {
    6. System.out.println("main() start...");
    7. m1();
    8. System.out.println("main() stop...");
    9. int a =5;
    10. System.out.println(a);
    11. }
    12. //2.创建m1()
    13. private static void m1() {
    14. System.out.println("m1() start...");
    15. m2();
    16. System.out.println("m1() stop...");
    17. }
    18. private static void m2() {
    19. System.out.println("m2() start...");
    20. }
    21. }

    10.补充知识: 单独使用return关键字

      如果要直接结束当前方法的执行,怎么解决?

      1). return; 跳出并立即结束所在方法的执行。

      2). break; 跳出并结束当前所在循环的执行。

      3). continue; 结束当前所在循环的当次继续,进入下一次执行。

    11.拓展 : 方法的递归

  • 相关阅读:
    计算机毕业设计(附源码)python裕民镇养老院信息管理系统
    LocalDateTime、LocalDate、Date的相互转换
    vue-element-admin+springboot登录功能实现
    C#基础--函数编程
    一文带你拿捏分支和循环语句(一万字详细讲解)
    Camera API2使用流程分析
    C++【继承】
    SpringCloudAlibaba SpringCloud SpringBoot 版本对照
    Python如何使用Redis
    Redis数据库的部署及常用命令
  • 原文地址:https://blog.csdn.net/LKS_010620/article/details/126326163