005-java基础语法之方法

005-java基础语法之方法

1、方法的定义

方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用。

public static void main(String[] args) {

}


/**
     * @param a 第一个整数
     * @param b 第二个整数
     * @return 返回两个数字中较大的一个数字
     */
public static int getMax(int a, int b) {
    int max = a > b ? a : b;
    return max;
}

2、方法的格式

2.1 方法的格式一
/*
        目标: 需要大家掌握方法的定义的格式,以及调用格式

                格式:
                        public static void 方法名(){

                        }
                 调用:
                        方法名();
                注意,方法写好之后,需要调用才能执行。

            1. 方法定义之后,需要去调用才能执行。
            2. 方法定义 需要放在方法外面
            3. 方法到底有什么用?
                    方法主要是为了抽取相同逻辑的代码。可以简化我们的代码,因为我们只需要写一次就可以多次使用。

     */
public static void main(String[] args) {
    isEvenNumber();
    isEvenNumber();
    isEvenNumber();
    isEvenNumber();
}

//需求: 定义一个方法,实现判断一个数字是奇数还是偶数,如果是奇数,则输出"奇数"反之,输出 "偶数"
public static void isEvenNumber() {
    System.out.println("这里调用了方法");
    int a = 9;
    if (a % 2 == 0) {
        System.out.println("偶数");
    } else {
        System.out.println("奇数");
    }
}
2.2 方法的格式二
/*
目标:  掌握带参数的方法的定义格式,以及调用格式  ,弄清楚有参数的好处
public static void 方法名(数据类型 变量名, 数据类型 变量名... ){

}
调用格式:  方法名(值 , 值...);
好处:
让我们方法更加灵活,增强方法的通用性。

*/
public static void main(String[] args) {
    isEvenNumber2(10);
    isEvenNumber2(15);
    int b = 30;
    isEvenNumber2(b);
}

public static void isEvenNumber2(int a) {
    if (a % 2 == 0) {
        System.out.println("偶数");
    } else {
        System.out.println("奇数");
    }
}
2.3 方法的格式三
/*
        目标:
            掌握带返回值方法的定义的格式以及调用方式,理解返回值的作用
            格式:
                    public static 数据类型 方法名(数据类型 变量名 ,数据类型 变量名....){

                        return 数据;
                    }

           调用格式:
                    方法名(值);     不推荐,因为这样做拿不到方法给你返回的数据
                    数据类型 变量名 = 方法名(值);      推荐使用。因为我们调用完方法之后,可以拿到方法返回的数据

         意义: 我们需要根据一个方法生成结果,用来组织另外一段代码逻辑
                【如果调用方法的地方需要拿到自定义方法的结果,就返回】
     */
public static void main(String[] args) {
    int sum1 = add(90, 100);
    int sum2 = add(90, 90);
    int sum = sum1 + sum2;
    System.out.println(sum);
}

//任务一:计算两个小组的总成绩
//1. 在方法里面 添加上 return 数据;  数据 -> 你需要返回的数据
//2. 把void 改成这个数据对应的类型
public static int add(int a, int b) {
    int sum = a + b;
    System.out.println(sum);
    return sum;
}

3、方法的注意事项

return 的作用:程序到 return 就结束整个方法

public static void main(String[] args) {
    test();
}


public static void test(){
    //   return; //因为方法到这里就已经结束了
    //  int a = 10;   //Unreachable statement 不能到达声明
    for (int i = 0; i < 10; i++) {
        if(i == 3){
            return;
        }
        System.out.println(i);
    }
    System.out.println("方法结束了");
}

语法完整性

public static void main(String[] args) {
    test();
}
//语法完整性

//不管走的是if 还是 else 都会返回一个数据
public static boolean test2( int a ){
    /*    if(a >= 10){
            return true;
        }else {
            return false;
        }*/
    //Missing return statement  缺少一个返回值的声明

    for (int i = 0; i < 5; i++) {
        return true;
    }

    return true;

}
1.方法的形参可以是基本类型和引用类型
2.方法的返回值可以是基本类型,也可以是引用类型
3.方法形参如果是一个数组,接收的实参是这个数组的地址
4.方法内部对参数数组的元素进行更改后,不用返回这个数组

数据类型:
   基本数据类型:
   byte short char int long float double boolean

   引用数据类型:
   数组,类,接口...

   基本数据类型,变量名代表的就是具体的值
   引用数据类型,变量名代表的是一个 内存地址 ,它没有具体的值,它用的是别人的。

4、方法重载

方法重载定义:

一个类中,可以存在多个同名的方法。但是 要求,参数列表不同【参数的个数不同,类型不同】
我们把这些方法的关系,称之为 :  方法重载。
JVM 在调用方法的时候,会根据参数的类型和个数对应去调用方法, 跟返回值类型没有关系
public static void main(String[] args) {
    //   method(10 ,20);

    // sum(10 ,20 , 30);
    sum(13.14 , 5.2);


}
public static int sum(int a , int b){
    System.out.println("执行了两个整数的求和方法");
    return a + b;
}

public static double sum(double a , double b){
    System.out.println("执行了两个小数的求和方法");
    return a + b;
}

public static int sum(int a , int b , int c){
    System.out.println("执行了三个整数的求和方法");
    return a + b + c;
}

5、参数传递

1、对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
2、引用数据类型的参数,形式参数的改变,会影响实际参数值的变化

5.1 重点
public static void main(String[] args) {
    int arr[] = {1, 3, 5, 7, 9};
    int num = 10;
    showArray(arr, num);
    System.out.println("arr[2]的结果是:"+arr[2]);   //6
    System.out.println("num的结果是:"+num);        //10
}
private static void showArray(int[] arr, int num) {
    arr[2] = 6;
    num = 1;
}

6、综合练习

/*
        定义返回值类型为 int 类型,名为 getScore(int[] arr)的静态方法,方法内完成:获取指定数
        组 arr 中大于平均值的元素的个数,并返回。
            目标: 返回大于数组平均值的元素的个数
            数据: 数组
            思路:
                    1. 需要求出平均值  ==>   平均值 =  总和 / 总个数
                        1.1 需要求和 ->
                            a. 在循环外定义一个 int sum  = 0 用来接受和
                            b. 循环里面  sum += 要求的元素
                            c. 循环结束 sum 即为和
                        1.2
                            int avg = sum / arr.length;

                    2. 遍历数组,统计大于平均值的元素的个数
                        2.1 统计
                            a. 需要在循环外定义一个int count = 0; 用来计数
                            b. 遍历数组,用每一个元素和 平均值比较,如果大于平均值 count++;
                            c. 循环结束 count即为符合条件的个数
                    3. 返回count
                    */
/*
        定义 main 方法,方法内完成:
            1).定义一个长度为 5 的 int 数组 arr
            2).使用随机数生成 5 个范围为 1-99 的数字存入 arr 中(包含 1 和 99),之后打印数组
            3). 调用 getScore(int[] arr)方法 ,传递 arr,获取方法返回值并在控制台打印输出该返回值
     */
public static void main(String[] args) {
    //定义一个长度为 5 的 int 数组 arr
    int[] arr = new int[5];
    Random r = new Random();

    for (int i = 0; i < arr.length; i++) {
        arr[i] = r.nextInt(99) + 1;
    }
    System.out.println(Arrays.toString(arr));
    int count = getScore(arr);
    System.out.println("大于平均值的元素个数是:" + count);

}

public static int getScore(int[] arr){
    // a. 在循环外定义一个 int sum  = 0 用来接受和
    int sum = 0;
    // b. 循环里面  sum += 要求的元素
    for (int i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    //需要求出平均值
    int avg = sum / arr.length;
    System.out.println("平均值是:" + avg);
    //  2. 遍历数组,统计大于平均值的元素的个数
    // a. 需要在循环外定义一个int count = 0; 用来计数
    int count = 0;
    // b. 遍历数组,用每一个元素和 平均值比较,如果大于平均值 count++;
    for (int i = 0; i < arr.length; i++) {
        //如果大于平均值 count++;
        if(arr[i] > avg){
            count++;
        }
    }
    //c. 循环结束 count即为符合条件的个数
    return count;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值