JavaSE基础之静态方法

一、方法导论:

方法(method):就是完成特定功能的代码块

比如:

public static void main(String[] args){
    System.out.println(HelloWorld);
} 

主方法他其中代码的功能:是在控制台输出一个字符串数据:HelloWorld

再举个例子:植物大战僵尸

假如豌豆射手需要20行代码实现他的发射炮弹功能

寒冰射手也需要20行代码实现他的发射炮弹功能

大头菜射手也需要20行代码实现他的发射炮弹功能......

那么每个植物我们都要写发射炮弹的代码,而代码实现的功能一样,就很麻烦!

针对这种情况Java的程序员就提出方法

我们只需要把发射炮弹打包,定义一个方法:发射

接下来发炮弹的时候,直接调用发射方法就行

这时候新加入一个射手,这个植物也要发射炮弹,我们也是直接调用方法就行


二、静态方法的定义和调用

2.1、静态方法的通用定义

public static 返回值类型 方法名(形式参数){

        //方法体(具体实现的功能)

        return 数据;

} 

格式说明:

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

返回值类型:方法操作完毕之后返回的数据的数据类型(如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般return可以省略)

方法名:方法的命名,调用方法时候使用的

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

方法体:完成功能的代码块

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

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

首先明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型。

其次明确参数:主要是明确参数的类型和数量


2.2、形参和实参的区别

形参:方法定义的参数

实参:方法体中定义/直接字面量的参数

public class mothodDemo {
    public static void main(String[] args) {
        int number = 9;
        if (isEvenNumber(number)) {
            System.out.println(number + "是偶数");
        } else {
            System.out.println(number + "不是偶数");
        }
    }

    public static boolean isEvenNumber(int number) {
        if (number % 2 == 0) return true;
        return false;
    }
}

 可以看到上面的这段代码中:(红色为形参蓝色为实参

isEvenNumber(int number)方法实现的功能是判断number是不是偶数,并且返回一个boolean类型的数据表示是不是偶数;

main(String[] args)方法实现的功能是提供主方法入口,调用了isEvenNumber方法判断实参number是否为偶数,并在控制台打印判断结果;


2.3、静态方法的调用

静态方法的调用方式有两种:

1、在同一包下的静态方法可以直接通过方法名调用,或者类名.方法名的形式调用

2、在不同包下的静态方法需要import导包,或者通过包名.类名.方法名的形式调用

还是举例说明:水仙花数

需求:设计一个方法用于判断一个整数是否是水仙花数,调用方法,把结果在控制台输出。

分析:

①方法定义使用两个明确分析该方法的参数和返回值参数:int number返回值类型:boolean

②方法调用变量接收调用

示例代码:

public class mothodTest {
    public static void main(String[] args) {
        int number_01 = 111;//待测试用例1
        int number_02 = 153;//待测试用例2
        //判断测试用例一
        if (isFlowerNumber(number_01)) {
            System.out.println(number_01 + "是水仙花数");
        } else {
            System.out.println(number_01 + "不是水仙花数");
        }
        //判断测试用例二
        if (isFlowerNumber(number_02)) {
            System.out.println(number_02 + "是水仙花数");
        } else {
            System.out.println(number_02 + "不是水仙花数");
        }


    }
    //定义带参带返回值的静态方法判断水仙花树
    public static boolean isFlowerNumber(int number) {
        int geWei = number % 10;
        int shiWei = number / 10 % 10;
        int baiWei = number / 100 % 10;
        if (geWei * geWei * geWei + shiWei * shiWei * shiWei + baiWei * baiWei * baiWei == number) {
            return true;
        } else {
            return false;
        }
    }
}

从控制台输出的结果可以看出,我们调用了定义的带参带返回值的静态方法成功判断了111不是水仙花数,153是水仙花数。


三、静态方法的注意事项

主要分享两点容易出错的:

3.1、方法不能嵌套定义


3.2、void表示无返回值

可以省略return,也可以单独写return表示结束,后面不跟任何数据类型。


四、方法重载

4.1、什么是方法重载

方法中一个非常重要的特性:方法重载。

什么是方法重载:

方法重载:指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同,类型不同或者数量不同

 

上面两个静态方法,在用一个类下,同样的返回值类型,同样的方法名,只有参数不同,实现不同的功能,这说明:在Java调用方法的时候,Java得Jvm(虚拟机)就会自动通过参数分别同名的重载方法。


4.2、方法重载的特点 

知道了什么是方法重载后,我来说一下方法重载的特点:

  • 类型不同或者数量不同重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
  • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

 


4.3、练习

求和

需求:使用方法重载的思想,设计能将两个整数/三个整数/两个浮点数求和的方法

示例代码:

/*方法重载:
    多个方法在同一个类中
    多个方法具有相同的方法名
    多个方法的参数不相同,类型不同或者数量不同
调用方法的时候,Java虚拟机会通过参数的不同来区分同名的方法
*/
public class mothodTest_01 {
    public static void main(String[] args) {
        int number_01=1;
        int number_02=2;
        int number_03=3;
        double number_04=5.2;
        double number_05=2.1;
        int sum_01=sum(number_01,number_02);
        int sum_02=sum(number_01,number_02,number_03);
        double sum_03=sum(number_04,number_05);
    }
    //两个int类型的整数求和
    public static int sum(int a, int b) {
        return a + b;
    }
    //三个int类型的整数求和
    public static int sum(int a, int b, int c) {
        return a + b + c;
    }
    //两个double类型的浮点数求和
    public static double sum(double a, double b) {
        return a + b;
    }
    //不能通过返回值来判定两个方法
    /*public static double sum(int a,int b){
        return (double)(a+b);
    }*/

}

比较相等

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

示例代码:

/*方法重载:
    多个方法在同一个类中
    多个方法具有相同的方法名
    多个方法的参数不相同,类型不同或者数量不同
调用方法的时候,Java虚拟机会通过参数的不同来区分同名的方法
*/
public class mothodTest_02 {
    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;
    }

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓦特的代码小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值