从零开始学习 Java:简单易懂的入门指南之方法(六)

简介: 方法的概念:方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义,方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

java基础知识

1. 方法概述

1.1 方法的概念

2. 方法的定义和调用

2.1 无参数方法定义和调用

2.3 无参数方法的练习

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

3.1 带参数方法定义和调用

3.2 形参和实参

3.3 带参数方法练习

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

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

4.2 带返回值方法练习1

4.3 带返回值方法练习2

4.4 带返回值方法练习3

5. 方法的注意事项

5.1 方法的注意事项

5.2 方法的通用格式

6. 方法重载

6.1 方法重载

6.2 方法重载练习

7.3 数组遍历

7.4 数组最大值

7.6 获取索引


1. 方法概述

1.1 方法的概念

方法(method)是程序中最小的执行单元


注意:

方法必须先创建才可以使用,该过程成为方法定义

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

2. 方法的定义和调用

2.1 无参数方法定义和调用

定义格式:

public static void 方法名 (   ) {
  // 方法体;
}

范例:

public static void method (    ) {
  // 方法体;
}


调用格式:


方法名();


范例:


method();


注意:


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


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 形参和实参

形参:方法定义中的参数

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


实参:方法调用中的参数

等同于使用变量或常量,例如: 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 带返回值方法练习1

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


思路:


①定义一个方法,用于获取两个数字中的较大数

②使用分支语句分两种情况对两个数字的大小关系进行处理

③根据题设分别设置两种情况下对应的返回结果

④在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;
        }
    }
}


4.3 带返回值方法练习2

需求:

定义一个方法,求一家商场每个季度的营业额。根据方法结果再计算出全年营业额。

代码示例:


package com.itheima.demo;
public class MethodDemo9 {
    public static void main(String[] args) {
        /*需求:定义一个方法,求一家商场每个季度的营业额。
        根据方法结果再计算出全年营业额。*/
        int sum1 = getSum(10, 20, 30);
        int sum2 = getSum(10, 20, 30);
        int sum3 = getSum(10, 20, 30);
        int sum4 = getSum(10, 20, 30);
        int sum = sum1 + sum2 + sum3 + sum4;
        System.out.println(sum);
    }
    //心得:
    //1.我要干嘛?  决定了方法体   每个季度的营业额
    //2.我干这件事情,需要什么才能完成? 决定了形参 需要三个月的营业额 a b c
    //3.我干完这件事情,看调用处是否需要使用方法的结果。   决定了返回值
    //如果需要使用,那么必须返回
    //如果不需要使用,可以返回也可以不返回
    public static int getSum(int month1,int month2,int month3){
        int sum = month1 + month2 + month3;
        //因为方法的调用处,需要继续使用这个结果
        //所以我们必须要把sum返回
        return sum;
    }
}


4.4 带返回值方法练习3

需求:

键盘录入两个圆的半径(整数),比较两个圆的面积。

代码示例:


import java.util.Scanner;
public class MethodDemo10 {
    public static void main(String[] args) {
        //需求:键盘录入两个圆的半径(整数),比较两个圆的面积。
        //键盘录入圆的半径
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入圆的半径");
        int radii1 = sc.nextInt();
        System.out.println("请输入第二个圆的半径");
        int radii2 = sc.nextInt();
        double area1 = getArea(radii1);
        double area2 = getArea(radii2);
        if(area1 > area2){
            System.out.println("第一个圆更大");
        }else{
            System.out.println("第二个圆更大");
        }
    }
    //心得:
    //1.我要干嘛?   求圆的面积
    //2.我干这件事情,需要什么才能完成?        半径
    //3.方法的调用处,是否需要继续使用方法的结果    要比较
    public static double getArea(int radii) {
        double area = 3.14 * radii * radii;
        return area;
    }
}


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 MethodDemo {
  public static void fn(int a) {
      //方法体
    }
    public static int fn(double a) {
      //方法体
    }
}
public class MethodDemo {
  public static float fn(int a) {
      //方法体
    }
    public static int fn(int a , int b) {
      //方法体
    }
}


错误范例:


public class MethodDemo {
  public static void fn(int a) {
      //方法体
    }
    public static int fn(int a) {   /*错误原因:重载与返回值无关*/
      //方法体
    }
}
public class MethodDemo01 {
    public static void fn(int a) {
        //方法体
    }
} 
public class MethodDemo02 {
    public static int fn(double a) { /*错误原因:这是两个类的两个fn方法*/
        //方法体
    }
}


6.2 方法重载练习

需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)


思路:


①定义比较两个数字的是否相同的方法compare()方法,参数选择两个int型参数

②定义对应的重载方法,变更对应的参数类型,参数变更为两个long型参数

③定义所有的重载方法,两个byte类型与两个short类型参数

④完成方法的调用,测试运行结果

代码:


public class MethodTest {
    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;
    }
}



7.3 数组遍历

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


思路:


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


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


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


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


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


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


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


⑤调用遍历方法


代码:

public class Test1 {
    public static void main(String[] args) {
      /*  //先打印数据,再进行换行
        System.out.println("aaa");
        //只打印不换行
        System.out.print("bbb");
        System.out.print("ddd");
        //不打印任何内容,只换行
        System.out.println();
        System.out.print("cc");*/
        //设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]
        int[] arr = {1,2,3,4,5};
        printArr(arr);
    }
    //1.我要遍历数组
    //2.需要什么?  数组
    //3.调用处是否需要使用方法的结果。
    public static void printArr(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                System.out.println(arr[i] + "]");
            }else{
                System.out.print(arr[i] + ", ");
            }
        }
    }
}


7.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;
    }
}


7.6 获取索引

需求:

定义一个方法获取数字,在数组中的索引位置,将结果返回给调用处,如果有重复的,只要获取第一个即可。

代码示例:


package com.itheima.demo;
public class Test4 {
    public static void main(String[] args) {
        //定义一个方法获取数字,在数组中的索引位置,将结果返回给调用处
        //如果有重复的,只要获取第一个即可
        int[] arr = {1,2,3,4,5};
        int index = contains(arr, 3);
        System.out.println(index);
    }
    //1. 我要干嘛?判断数组中的某一个数是否存在
    //2. 需要什么?数组 数字
    //3. 调用处是否需要继续使用?返回
    //获取number在arr中的位置
    public static int contains(int[] arr, int number) {
        //遍历arr得到每一个元素
        for (int i = 0; i < arr.length; i++) {
            //拿着每一个元素跟number比较
            if(arr[i] == number){
                //如果相等,表示找到了
                return i;
            }
        }
        //当循环结束之后,如果还不能返回索引,表示数组中不存在该数据
        //可以返回-1
        return -1;
    }
}


后记
👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹

相关文章
|
16天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
142 60
【Java并发】【线程池】带你从0-1入门线程池
|
3天前
|
缓存 安全 Java
【Java并发】【synchronized】适合初学者体质入门的synchronized
欢迎来到我的Java线程同步入门指南!我不是外包员工,梦想是写高端CRUD。2025年我正在沉淀中,博客更新速度加快,欢迎点赞、收藏、关注。 本文介绍Java中的`synchronized`关键字,适合初学者。`synchronized`用于确保多个线程访问共享资源时不会发生冲突,避免竞态条件、保证内存可见性、防止原子性破坏及协调多线程有序访问。
45 8
【Java并发】【synchronized】适合初学者体质入门的synchronized
|
2天前
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
38 25
|
4天前
|
存储 监控 Java
《从头开始学java,一天一个知识点》之:数组入门:一维数组的定义与遍历
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。明日预告:《多维数组与常见操作》。 通过实例讲解数组的核心认知、趣味场景应用、企业级开发规范及优化技巧,帮助你快速掌握Java数组的精髓。
53 23
|
10天前
|
运维 Java 程序员
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
10天前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
34 5
|
1月前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
111 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
1月前
|
Java API
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
|
2月前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。

热门文章

最新文章