自学Java之day04_方法

方法的由来

我们在学习运算符的时候,都为每个运算符单独的创建一个新的类和main方法,我们会发现这样编写代码非常的繁琐,而且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。

方法的概念

  • 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。

方法的定义

格式:

定义格式解释:
  • 修饰符:控制方法的访问权限,一般情况下都是根据需求来决定的。目前固定写法 public static。
  • 返回值类型: 一般情况下都是根据需求来决定的,表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
  • 方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。
  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
  • return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束。返回值类型是void,方法大括号内的return可以不写。return 结果; 这里的"结果"在开发中,我们正确的叫法成为方法的返回值 

tips:

  • 参数:就是进入方法的数据。
  • 返回值:就是从方法中出来的数据。
  • 参数列表:包括参数类型(进入方法的数据是什么类型)和参数名称(进入方法的数据对应的变量名称)。参数如果有多个,使用逗号进行分隔

代码演示

//定义了一个方法
public static void methodName() { 
    //方法的功能是输出字符串
    System.out.println("这是一个方法"); 
}

方法的调用

方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。

方法的三种调用格式。

  • 单独调用:方法名称(参数);
  • 打印调用:System.out.println(方法名称(参数));
  • 赋值调用:数据类型 变量名称 = 方法名称(参数);

注意:

  • 返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。

代码演示

package demo01;

//定义一个求2个int数之和的方法
public class Demo01Method {
    /*
    分析:
    1: 2个int数之和的返回值类型:int
    2:方法名称最好见名知意,可以是getSum
    3: 参数列表需要定义2个,可以是 int a ,int b
     */
    public static void main(String[] args) {
        // 单独调用
        getSum(10, 20);
        System.out.println("===========");

        // 打印调用
        System.out.println(getSum(10, 20));
        System.out.println("===========");

        // 赋值调用
        int number = getSum(15, 25);
        number += 100;
        System.out.println("变量的值:" + number);
    }

    private static int getSum(int a, int b) { // 参数如果有多个,使用逗号进行分隔
        int result = a + b;
        //return两个作用,第一停止当前方法,第二将后面的返回值还给调用处
        return result;
    }
}

代码执行后的结果

方法的调用流程图解

方法执行步骤如下图所示

定义方法的三个明确

例如:上面的案例中的getSum方法就是有返回值,有参数列表的方法。

  • 明确方法名称:满足标识符的规范,最好见名知意
  • 明确返回值类型:根据需求确定是否需要定义返回值类型,如果需要定义返回值类型,那么必须保证返回值类型必须和要和方法执行后的结果类型一致
  • 明确参数列表:根据需求确定是否需要定义参数列表,如果需要定义参数列表,那么必须明确参数类型和参数个数

对比有返回值和没有返回值的方法

如下图所示

定义方法的注意事项 

  • 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套。
  • 方法定义的前后顺序无所谓。
  • 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
  • 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
  • return后面的返回值数据,必须和方法的返回值类型,对应起来。
  • 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
  • 对于void方法当中最后一行的return可以省略不写。
  • 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。

代码演示

public class Demo04MethodNotice {
    public static void main(String[] args) {
        //直接调用方法
        getMax(3, 4);
    }

    public static int getMax(int a, int b) {

        //必须保证任何情况下有且只有一个return被执行
        if (a > b) {
            return a;
        } else {
            return b;
        }
    }

}

方法重载

  • 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
  • 参数列表不同是指:个数不同,数据类型不同,顺序不同。
  • 重载方法调用:JVM通过方法的参数列表,调用不同的方法

题目要求:

  • 比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试

代码实现

package demo04;

/*
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。

方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。

方法重载与下列因素相关:
1. 参数个数不同
2. 参数类型不同
3. 参数的多类型顺序不同

方法重载与下列因素无关:
1. 与参数的名称无关
2. 与方法的返回值类型无关
 */
public class Demo02MethodOverloadSame {

    public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        System.out.println(isSame(a, b));

        System.out.println(isSame((short) 20, (short) 20));

        System.out.println(isSame(11, 12));

        System.out.println(isSame(10L, 10L));
    }

    public static boolean isSame(byte a, byte b) {
        System.out.println("两个byte参数的方法执行!");
        boolean same;
        if (a == b) {
            same = true;
        } else {
            same = false;
        }
        return same;
    }

    public static boolean isSame(short a, short b) {
        System.out.println("两个short参数的方法执行!");
        boolean same = a == b ? true : false;
        return same;
    }

    public static boolean isSame(int a, int b) {
        System.out.println("两个int参数的方法执行!");
        return a == b;
    }

    public static boolean isSame(long a, long b) {
        System.out.println("两个long参数的方法执行!");
        if (a == b) {
            return true;
        } else {
            return false;
        }
    }

}

代码执行后的结果



猜你喜欢

转载自www.cnblogs.com/wurengen/p/12105262.html
今日推荐