作者:季沐测试笔记

原文地址https://www.cnblogs.com/testero/p/15201577.html

博客主页https://www.cnblogs.com/testero

1. 方法概述

1.1 方法的概念

​ 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

  • 注意:

    • 方法必须先创建才可以使用,该过程成为方法定义
    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

2. 方法的定义和调用

2.1 无参数方法定义和调用

  • 定义格式:

    public static void 方法名 (   ) {
    // 方法体;
    }
  • 范例:

    public static void method (    ) {
    // 方法体;
    }
  • 调用格式:

    方法名();
  • 范例:

    method();
  • 注意:

    ​ 方法必须先定义,后调用,否则程序将报错

2.2 方法调用过程图解

  • 总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。

2.3 无参数方法的练习

  • 需求:设计一个方法用于打印两个数中的较大数
  • 思路:
    • ①定义一个方法,用于打印两个数字中的较大数,例如getMax()
    • ②方法中定义两个变量,用于保存两个数字
    • ③使用分支语句分两种情况对两个数字的大小关系进行处理
    • ④在main()方法中调用定义好的方法
  • 代码:
public class MethodTest {
public static void main(String[] args) {
//在main()方法中调用定义好的方法
getMax();
} //定义一个方法,用于打印两个数字中的较大数,例如getMax()
public static void getMax() {
//方法中定义两个变量,用于保存两个数字
int a = 10;
int b = 20; //使用分支语句分两种情况对两个数字的大小关系进行处理
if(a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}

3. 带参数方法定义和调用

3.1 带参数方法定义和调用

  • 定义格式:

    参数:由数据类型和变量名组成 - 数据类型 变量名

    参数范例:int a

    public static void 方法名 (参数1) {
    方法体;
    } public static void 方法名 (参数1, 参数2, 参数3...) {
    方法体;
    }
  • 范例:

    public static void isEvenNumber(int number){
    ...
    }
    public static void getMax(int num1, int num2){
    ...
    }
    • 注意:

      方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
      
      方法定义时,多个参数之间使用逗号( ,)分隔
  • 调用格式:

    方法名(参数);方法名(参数1,参数2);
  • 范例:

    isEvenNumber(10);getMax(10,20);
    • 方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错

3.2 形参和实参

  1. 形参:方法定义中的参数

​ 等同于变量定义格式,例如:int number

  1. 实参:方法调用中的参数

​ 等同于使用变量或常量,例如: 10 number

3.3 带参数方法练习

  • 需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数 }
  • 思路:
    • ①定义一个方法,用于打印两个数字中的较大数,例如getMax()
    • ②为方法定义两个参数,用于接收两个数字
    • ③使用分支语句分两种情况对两个数字的大小关系进行处理
    • ④在main()方法中调用定义好的方法(使用常量)
    • ⑤在main()方法中调用定义好的方法(使用变量)
  • 代码:
public class MethodTest {
public static void main(String[] args) {
//在main()方法中调用定义好的方法(使用常量)
getMax(10,20);
//调用方法的时候,人家要几个,你就给几个,人家要什么类型的,你就给什么类型的
//getMax(30);
//getMax(10.0,20.0); //在main()方法中调用定义好的方法(使用变量)
int a = 10;
int b = 20;
getMax(a, b);
} //定义一个方法,用于打印两个数字中的较大数,例如getMax()
//为方法定义两个参数,用于接收两个数字
public static void getMax(int a, int b) {
//使用分支语句分两种情况对两个数字的大小关系进行处理
if(a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}

4. 带返回值方法的定义和调用

4.1 带返回值方法定义和调用

  • 定义格式

    public static 数据类型 方法名 ( 参数 ) {
    return 数据 ;
    }
  • 范例

    public static boolean isEvenNumber( int number ) {
    return true ;
    }
    public static int getMax( int a, int b ) {
    return 100 ;
    }
    • 注意:

      • 方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
  • 调用格式

    方法名 ( 参数 ) ;
    数据类型 变量名 = 方法名 ( 参数 ) ;
  • 范例

    isEvenNumber ( 5 ) ;
    boolean flag = isEvenNumber ( 5 );
    • 注意:

      • 方法的返回值通常会使用变量接收,否则该返回值将无意义

4.2 带返回值方法练习

  • 需求:设计一个方法可以获取两个数的较大值,数据来自于参数

  • 思路:

    • ①定义一个方法,用于获取两个数字中的较大数
    • ②使用分支语句分两种情况对两个数字的大小关系进行处理
    • ③根据题设分别设置两种情况下对应的返回结果
    • ④在main()方法中调用定义好的方法并使用变量保存
    • ⑤在main()方法中调用定义好的方法并直接打印结果
  • 代码:

    public class MethodTest {
    public static void main(String[] args) {
    //在main()方法中调用定义好的方法并使用变量保存
    int result = getMax(10,20);
    System.out.println(result); //在main()方法中调用定义好的方法并直接打印结果
    System.out.println(getMax(10,20));
    } //定义一个方法,用于获取两个数字中的较大数
    public static int getMax(int a, int b) {
    //使用分支语句分两种情况对两个数字的大小关系进行处理
    //根据题设分别设置两种情况下对应的返回结果
    if(a > b) {
    return a;
    } else {
    return b;
    }
    }
    }

5. 方法的注意事项

5.1 方法的注意事项

  • 方法不能嵌套定义

    • 示例代码:

      public class MethodDemo {
      public static void main(String[] args) { } public static void methodOne() {
      public static void methodTwo() {
      // 这里会引发编译错误!!!
      }
      }
      }
  • void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

    • 示例代码:

      public class MethodDemo {
      public static void main(String[] args) { }
      public static void methodTwo() {
      //return 100; 编译错误,因为没有具体返回值类型
      return;
      //System.out.println(100); return语句后面不能跟数据或代码
      }
      }

5.2 方法的通用格式

  • 格式:

    public static 返回值类型 方法名(参数) {
    方法体;
    return 数据 ;
    }
  • 解释:

    • public static 修饰符,目前先记住这个格式

      返回值类型 方法操作完毕之后返回的数据的数据类型

      ​ 如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return

      方法名 调用方法时候使用的标识

      参数 由数据类型和变量名组成,多个参数之间用逗号隔开

      方法体 完成功能的代码块

      return 如果方法操作完毕,有数据返回,用于把数据返回给调用者

  • 定义方法时,要做到两个明确

    • 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
    • 明确参数:主要是明确参数的类型和数量
  • 调用方法时的注意:

    • void类型的方法,直接调用即可
    • 非void类型的方法,推荐用变量接收调用

6. 方法的参数传递

6.1 方法参数传递基本类型

  • 测试代码:

    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;
    }
    }
  • 结论:

    • 基本数据类型的参数,形式参数的改变,不影响实际参数
  • 结论依据:

    • 每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

6.2 方法参数传递引用类型

  • 测试代码:

    public class ArgsDemo02 {
    public static void main(String[] args) {
    int[] arr = {10, 20, 30};
    System.out.println("调用change方法前:" + arr[1]);
    change(arr);
    System.out.println("调用change方法后:" + arr[1]);
    } public static void change(int[] arr) {
    arr[1] = 200;
    }
    }
  • 结论:

    • 对于引用类型的参数,形式参数的改变,影响实际参数的值
  • 结论依据:

    • 引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果

6.3 数组遍历

  • 需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]

  • 思路:

    • ①因为要求结果在一行上输出,所以这里需要在学习一个新的输出语句System.out.print(“内容”);

      System.out.println(“内容”); 输出内容并换行

      System.out.print(“内容”); 输出内容不换行

      System.out.println(); 起到换行的作用

    • ②定义一个数组,用静态初始化完成数组元素初始化

    • ③定义一个方法,用数组遍历通用格式对数组进行遍历

    • ④用新的输出语句修改遍历操作

    • ⑤调用遍历方法

  • 代码:

    public class MethodTest01 {
    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(arr[x]);
    } else {
    System.out.print(arr[x]+", ");
    }
    }
    System.out.println("]");
    }
    }

6.4 数组最大值

  • 需求:设计一个方法用于获取数组中元素的最大值

  • 思路:

    • ①定义一个数组,用静态初始化完成数组元素初始化
    • ②定义一个方法,用来获取数组中的最大值,最值的认知和讲解我们在数组中已经讲解过了
    • ③调用获取最大值方法,用变量接收返回结果
    • ④把结果输出在控制台
  • 代码:

    public class MethodTest02 {
    public static void main(String[] args) {
    //定义一个数组,用静态初始化完成数组元素初始化
    int[] arr = {12, 45, 98, 73, 60}; //调用获取最大值方法,用变量接收返回结果
    int number = getMax(arr); //把结果输出在控制台
    System.out.println("number:" + number);
    } //定义一个方法,用来获取数组中的最大值
    /*
    两个明确:
    返回值类型:int
    参数:int[] arr
    */
    public static int getMax(int[] arr) {
    int max = arr[0]; for(int x=1; x<arr.length; x++) {
    if(arr[x] > max) {
    max = arr[x];
    }
    }
    return max;
    }
    }

Java(11)方法详细介绍的更多相关文章

  1. 04-vi使用方法详细介绍

    vi使用方法详细介绍 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版 ...

  2. WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍

    这篇文章主要介绍了WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍,WQL是指Windows管理规范查询语言,需要的朋友可以参考下 WQL就是WMI中的查询语言,WQL的全称是W ...

  3. python模块之datetime方法详细介绍

    datetime Python提供了许多内置模块用于操作时间日期,如calendar,time,datetime,这篇文章主要是对datetime进行汇总,datetime模块的借口实现原则更加直观, ...

  4. Java 11 新特性介绍

    Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个 ...

  5. java之Stack详细介绍

    1  Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Ve ...

  6. PHP之十六个魔术方法详细介绍

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用.这里进行详细介绍,感兴趣的小伙伴们可以参考一下. PHP中把以两个下划线__开头 ...

  7. python模块之calendar方法详细介绍

    calendar,是与日历相关的模块.calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型.其中,Calendar是TextCal ...

  8. Github开源Java项目(Disconf)上传到Maven Central Repository方法详细介绍

    最近我做了一个开源项目 Disconf:Distributed Configuration Management Platform(分布式配置管理平台) ,简单来说,就是为所有业务平台系统管理配置文件 ...

  9. Java小知识--length,length(),size()方法详细介绍

    Java中length,length(),size()区别 length属性:用于获取数组长度. eg: int ar[] = new int{1,2,3} /** * 数组用length属性取得长度 ...

随机推荐

  1. python 实用技巧:几十行代码将照片转换成素描图、随后打包成可执行文件(源码分享)

    效果展示 原始效果图 素描效果图 相关依赖包 # 超美观的打印库 from pprint import pprint # 图像处理库 from PIL import Image # 科学计算库 imp ...

  2. MySQL密码重置方法

    MySQL数据库的安装和配置,配置Mysql按照bin目录到Path中 使用命令行窗口连接MYSQL数据库:mysql –u用户名 –p密码 对于密码的重置有以下两种方法(卸载重新安装当然也可以): ...

  3. 从synchronize到CSA和

    目录 导论 悲观锁和乐观锁 公平锁和非公平锁 可重入锁和不可重入锁 Synchronized 关键字 实现原理 Java 对象头 Monitor JVM 对 synchronized 的处理 JVM ...

  4. SQL语句之基本使用

    1.sql语法 一些重要的SQL命令: SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数 ...

  5. 离线安装Windows Terminal

    Windows Terminal颜值高.适配好.速度快,是Windows 10下命令行工具的不二选择. 最近在公司电脑上安装Windows Terminal时遇到一个问题,由于公司电脑不能直接连接外网 ...

  6. 通过JDK动态代理实现 Spring AOP

    1.新建一个目标类 接口:public interface IUserService //切面编程 public void addUser(); public void updateUser( ); ...

  7. 快速模式第三包收尾之quick_inI2()

    快速模式第三包收尾之quick_inI2() 文章目录 快速模式第三包收尾之quick_inI2() 1. 序言 2. quick_inI2()处理流程图 3. 报文格式 4. quick_inI2( ...

  8. jq给动态标签绑定事件

    $(document).on("click", ".autocompleteDiv .autocomplete_ul li", function () { lo ...

  9. 使用 elementUI 的表单进行查询,表单中只有一个文本框时,回车会自动触发表单的提交事件,导致页面的刷新。

    使用elementUI的el-form组件进行查询时,当输入框仅有一项时,回车自动提交表单,浏览器会刷新页面: 原因:由于当表单只有一个文本框时,按下回车将会触发表单的提交事件, 从而导致页面刷新. ...

  10. CSP-J 2021 游记

    今年是本人第一次参加CSP组的竞赛. Day 0 晚上复习了几套初赛试卷,做到晚上十点多结束.其实暑假已经做过不少了. Day 1 早上继续复习noip历年真题,在洛谷有题上面自己做题,一向只能考十几 ...