作者:季沐测试笔记

原文地址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. nios eclipse提示LED_PIO_BASE没有声明,怎么回事?

    这是因为名字不一致引起的比如,在生成SOPC系统时,双击PIO(Parallel I/O)(在Avalon Modules -> Other 下),为系统添加输出接口,你没有把该组件改名成LED ...

  2. 微服务架构及raft协议

    微服务架构全景图 服务注册和发现 Client side implement 调用需要维护所有调用服务的地址 有一定的技术难度,需要rpc框架支持 Server side implement 架构简单 ...

  3. 代码保留格式(高亮)复制到Word(转载)

    将代码保持高亮复制粘贴到word上,一些方法如下: 方法一:借助网站http://www.planetb.ca/syntax-highlight-word/(代码有编号,整体排版精美令人舒适,但语言有 ...

  4. GDB调试:Linux开发人员必备技能

    开篇词:Linux C/C++ 开发人员要熟练掌握 GDB 调试 大家好,我是范蠡,目前在某知名互联网旅游公司基础框架业务部技术专家组任开发经理一职. 本系列课程的主题是 Linux 后台开发的 C/ ...

  5. VUE001. 拖动div盒子(自定义指令v-directives)

    拖动div是一个逻辑很简单的需求,监听容器的鼠标按下松开的事件,执行函数通过DOM改变标签的CSS偏移量. 在VUE构建的项目中,通过标签的 @mousedown 和 @mouseup 赋予行为事件, ...

  6. jq 追加元素的几种方法

    jQuery添加插入元素技巧: jquery添加分为在指定元素的里面添加和外面添加两种: 里面添加使用(append 和prepend) 里面添加又分为在里面的前面添加和后面添加 里面的前面添加使用 ...

  7. EF架构封装类

    http://www.woxihuan.com/46528208/1323334777088641.shtml http://www.ediclot.com/archives/2368 http:// ...

  8. HCNP Routing&Switching之IS-IS路由聚合和认证

    前文我们了解了IS-IS路由渗透和开销相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15302382.html:今天我们来聊一聊IS-IS路由聚合和认 ...

  9. AES加密基本原理图解

    AES加密 Fright-Moch整理 AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的).对 ...

  10. Android通过WebView实现新闻界面的加载

    原文链接:Android实现WebView加载网页及网页美化(简易新闻 四)_Tobey_r1的博客-CSDN博客 效果展示: 我是按照原文作者的步骤一步步来的,中间没有遇到什么问题.主要是界面中有很 ...