Java中的方法

本文介绍了Java编程中的方法概念,包括方法的封装原则,如何定义和调用带有不同参数和返回值类型的方法,以及重载的原理和示例。还通过评委打分和猜数字游戏展示了实际应用场景。
摘要由CSDN通过智能技术生成

一、方法

  • 作用:用于封装一段特定的业务逻辑功能
  • 建议:尽可能独立,一个方法只干一件事
  • 方法可以被反复多次调用
  • 好处:可以减少代码重复,有利于代码维护
  • 何时用:只要是一个独立的业务功能,就得封装到一个方法中

二、方法的定义

修饰词  返回值类型  方法名(参数列表){
    方法体---------具体的业务逻辑功能实现
}
//无参无返回值
public static void say(){
    System.out.println("大家好,我叫WKJ,今年38岁了");
}

//有参无返回值
public static void sayHi(String name){ //----------------------形参
    System.out.println("大家好,我叫"+name+",今年38岁了");
}

//有参无返回值
public static void sayHello(String name,int age){ //-----------形参
    if(age>=60){ //在某种特定条件下,提前结束方法
        return; //结束方法
    }
    System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
}

//有参有返回值
public static int sum(int num1,int num2){
    int num = num1+num2;
    return num; //返回的是num里面的那个数
    //return num1+num2; //返回的是num1与num2的和
}

//生成一个整型数组,并填充随机数据
public static int[] generateArray(int len,int max){
    Random rand = new Random();
    int[] arr = new int[len];
    for(int i=0;i<arr.length;i++){
        arr[i] = rand.nextInt(max+1); //包括max
    }
    return arr;
}

 三、方法的调用

3.1、无返回值:方法名(有参传参)

public class MethodDemo {
    public static void main(String[] args) {
        say(); //自动绑定无参say
        say("zhangsan"); //自动绑定String参的say
        say("lisi",25); //自动绑定String+int参的say

        say(); //自动绑定无参say
        say("zhangsan"); //自动绑定String参的say
        say("lisi",25); //自动绑定String+int参的say
        //say(3.456); //绑定错误,没有double参的say 

}

//无参无返回值
    public static void say(){
        System.out.println("大家好,我叫WKJ,今年40岁了");
    }
    //有参无返回值
    public static void say(String name){ //------------------------形参
        System.out.println("大家好,我叫"+name+",今年40岁了");
    }
    //有参无返回值
    public static void say(String name,int age){ //-------------形参
        if(age>=60){ //在某种特定条件下,提前结束方法
            return; //结束方法
        }
        System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
    }

}

3.2、有返回值:数据类型 变量 = 方法名(有参传参)

//方法的演示
public class MethodDemo {
    public static void main(String[] args) {
        sum(1,2)
}

//有参有返回值
    public static int sum(int num1,int num2){
        int num = num1+num2;
        return num; //返回的是num里面的那个数
        //return num1+num2; //返回的是num1与num2的和
    }
}

 四、return

  • return 值; //1)结束方法的执行 2)返回结果给调用方------------用在有返回值的方法中
  • return; //1)结束方法的执行------------------------------------------用在无返回值的方法中

五、方法的重载(overloading)

  • 发生在同一类中,方法名相同,参数列表不同

  • 编译器在编译时会根据方法的签名自动绑定方法

public class MethodDemo {
    public static void main(String[] args) {
        say(); //自动绑定无参say
        say("zhangsan"); //自动绑定String参的say
        say("lisi",25); //自动绑定String+int参的say
        //say(3.456); //编译错误,没有double参的say
    }

    //无参无返回值
    public static void say(){
        System.out.println("大家好,我叫WKJ,今年39岁了");
    }

    //有参无返回值
    public static void say(String name){ //-----------------形参
        System.out.println("大家好,我叫"+name+",今年39岁了");
    }
    
    //有参无返回值
    public static void say(String name,int age){ //------形参
        if(age>=50){ //在某种特定条件下,提前结束方法
            return; //结束方法的执行
        }
        System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
    }

    public static void say(int age) {} //正确的重载
    public static void say(int age,String name){} //正确的重载
    //public static int say(){ return 1; } //编译错误,重载与返回值类型无关
    //public static void say(String address) { } //编译错误,重载与参数名称无关
}

 六、基础案例

6.1、评委给选手打分

package day06;
import java.util.Scanner;
/**
 * 需求:<<主持人大赛>>有N位评委给选手打分
 *     选手的最终得分为:去掉最高分和最低分之后的N-2位评委的平均分
 * 要求:使用方法实现
 */
public class CalAvg {
    public static void main(String[] args) { //撒贝宁
        double[] scores = inputData(6); //1)录入评委的评分
        double avg = calAvg(scores); //2)计算平均分
        System.out.println("平均分为:"+avg);
    }

    /** 该方法用于录入N位评委的评分 */
    public static double[] inputData(int n){
        double[] scores = new double[n]; //评分数组
        Scanner scan = new Scanner(System.in);
        for(int i=0;i<scores.length;i++){
            System.out.println("请录入第"+(i+1)+"位评委的分数:");
            scores[i] = scan.nextDouble();
        }
        return scores;
    }

    /** 该方法用于计算平均分 */
    public static double calAvg(double[] scores){
        double total = 0.0; //总分
        double max = scores[0]; //假设第1个元素为最高分
        double min = scores[0]; //假设第1个元素为最低分
        for(int i=0;i<scores.length;i++){
            total += scores[i]; //累加所有评分
            if(scores[i]>max){ //找最高分
                max = scores[i];
            }
            if(scores[i]<min){ //最低分
                min = scores[i];
            }
        }
        //计算平均分---总分减掉最高分和最低分之后,再除以(评委数-2)
        double avg = (total-max-min)/(scores.length-2);
        return avg;
    }
}

6.2、 猜数字小游戏

import java.util.Random;
import java.util.Scanner;
/**
 * 需求:猜数字小游戏
 * 训练目标: while(true)自造死循环+break
 */
public class Guessing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random rand = new Random();
        int num = rand.nextInt(1000)+1; //1到1000
        System.out.println(num); //作弊

        while(true){ //自造死循环
            System.out.println("猜吧!");
            int guess = scan.nextInt();
            if(guess>num){
                System.out.println("猜大了");
            }else if(guess<num){
                System.out.println("猜小了");
            }else{
                System.out.println("恭喜你猜对了!");
                break; //跳出循环
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值