2020天学JAVA-java方法

一、定义

1.方法是什么
●方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。
方法的完整格式
修饰符 返回值类型 方法名(形参列表){
        方法体代码(需要执行的功能代码)
        return返回值;
}
2.方法如何执行?
方法定义后,必须调用才可以跑起来,调用格式: 方法名(实参);

3.方法定义时几个注意点


●不要放在public static void main(String[] args) {}程序段里面
●方法的修饰符:暂时都使用public static修饰。
方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
●形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。

4、使用方法有什么好处?
●提高代码的复用性,提高开发效率,使程序逻辑更清晰。

二、方法的其他形式

方法定义时:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题。
●方法不需要接收数据,则形参列表可以不写;方法不需要返回数据,则申明返回值类型为void;
●方法没有申明返回值类型(void) ,内部不能使用return返回数据。
●方法如果没有形参列表,调用的时候则不能传入参数值,否则报错。

三、方法使用时的常见问题

●方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面。
●方法的返回值类型写void (无返回申明)时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
return语句的下面, 不能编写代码,属于无效的代码,执行不到这儿。
●方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
调用有返回值的方法,有3种方式: 1、可以定义变量接收结果2、或者直接输出调用,3、甚至直接调用;
●调用无返回值的方法, 只有1种方式: 1.只能直接调用。

四、方法的案例

设计方法的技巧,主要关注三方面:
1、方法是否需要接收数据进行处理?
2、方法是否需要返回数据?
3、方法要处理的业务(编程能力)。

需求1:(建议自己先写好再看示例代码)
●求1-n的和。
分析:
1.方法是否需要接收数据进行处理?
需要接收n具体的值,因此形参声明为: int n.
2.方法是否需要返回数据? 需要返回1-n的求和结果,因此返回值类型声明为int.
3.方法内部的业务:完成求1-n的和并返回。

package com.itheima.define;

public class MethodDome1 {
    public static void main(String[] args) {
        System.out.println(sum(100));
    }
    public static int sum(int n){
        int rs =0;
        for (int i = 1; i <= n; i++) {
            rs +=i;
        }
        return rs;
    }
}

需求2:
●判断一个整数是奇数还是偶数,并把判断的结果输出出来。
分析:
1.方法是否需要接收数据进行处理? 需要接收一 个整数来判断, 因此形参声明为: int number.
2.方法是否需要返回数据? 方法内部判断完后直接输出结果即可,无需返回,因此返回值类型声明为: void
3.方法内部的业务:通过if语句判断number是奇数还是偶数,并输出结果。

package com.itheima.define;

import java.util.Scanner;

public class MethodDome1 {
    public static void main(String[] args) {
        oddjudge();
    }
    public static void oddjudge(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字:");
        int number = sc.nextInt();
        if (number % 2 == 1){
            System.out.println("奇数");
        }else{
            System.out.println("偶数");
        }
    }
}

五、方法在计算机中的执行原理

方法被调用的时候,是进入到栈内存中运行。

先把main方法入栈,运行到定义方法调用到栈,运行完定义方法就出栈,继续运行main方法,最后main方法运行完,main方法出栈。

六、Java的参数传递

1. Java的参数传递机制是什么样的?
●值传递,传输的是实参存储的值的副本。
●实参:在方法内部定义的变量。
●形参:以方法为例,就是方法定义时的变量。

2、基本类型和引用类型的参数在传递的时候有什么不同?
●都是值传递。
●基本类型的参数传输存储的数据值。(在方法中改变变量的值,在main中不会改变
引用类型(数组等)的参数传输存储的地址值。(在方法中改变数组的值,在main中也会改变

3.引用类型参数传递的相关案例

需求1:
●输出一个int类型的数组内容,要求输出格式为: [11, 22,33, 44, 55]。
分析:
1.方法是否需要接收数据进行处理? 需要接收一个int类型 的数组,因此形参声明为: int[] arr.
2.方法是否需要返回数据? 方法内部直接输出数组内容即可,无需返回,因此返回值类型声明为: void
3.方法内部的业务:遍历数组,并输出相应的内容。

package com.itheima.define;

public class parameterDemo2 {
    public static void main(String[] args) {
        int[] ar = {11, 22, 33, 44, 55};
        printArray(ar);
    }
    public static void printArray(int[] arr){
        if(arr == null){
            System.out.println(arr);
            return;
        }//如果数组是空值,直接打印并用 return跳过后面的程序以免报错
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i < arr.length-1){
                System.out.print(arr[i] + ",");
            }else {
                System.out.print(arr[i]);
            }
        }
//        System.out.print(i == arr.length - 1 ? arr[i] :arr[i] + ",");简化写法
        System.out.print("]");
    }
}

需求2:
●如果两个int类型的数组,元素个数,对应位置的元素内容都是-样的则认为这2个数组是一-模一 样的。
分析:
1.方法是否需要接收数据进行处理?需要接收两个int类型的数组,因此,形参声明为: int[] arr1, int[] arr2
2.方法是否需要返回数据?方法判断完后需要返回: true、 false, 因此,返回值类型声明为boolean类型。
3.方法内部的业务:判断两个数组内容是否一样。

package com.itheima.define;

public class parameterDemo3 {
    public static void main(String[] args) {
        int[] ar1 = {1, 2, 3};
        int[] ar2 = {1, 2, 4};
        System.out.println(Arrayjudge(ar1, ar2));
    }
    public static boolean Arrayjudge(int[] arr1,int[] arr2) {
        boolean rs =false;
        if(arr1 == null && arr2 ==null){
            rs = true;
        }
        if(arr1 == null || arr2 ==null){
            rs = false;
        }
        if(arr1.length == arr2.length){
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] == arr2[i]){
                 rs =true;
                }else{
                    rs =false;
                }
            }
        }else{
            rs = false;
        }
        return rs;
    }
}

七、方法重载

一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。

方法重载的注意事项
●一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,其它的都不管(如:修饰符,返回值类型是否一样都无所谓)。
●形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称(如同类型,一个取名字a,一个取b)

重载应用场景
●开发中我们经常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很专业的。

八、补充知识:在方法中单独使用return关键字

return关键字在方法中单独使用
●return; 可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行。

package com.itheima.define;

public class returnDemo1 {
    public static void main(String[] args) {
        chu(5,0);
    }
    public static void chu(int a,int b) {
            if(b == 0){
                System.out.println("除数为0,无法执行");
                return;
            }else{
                int c = 0;
                System.out.println(c = a / b);
            }
    }
}

九、总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值