Java学习第04天-方法

方法

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

好处

  • 提高了代码的复用性
  • 程序的逻辑更加清晰

方法的定义、调用

完整格式

修饰符 返回值类型 方法名(形参列表){
	方法体结构(需要执行的功能代码);
	return 返回值;
}

案例

public class create {
    public static void main(String[] args) {
        System.out.println(add(156, 456));
    }

    public static int add(int original, int plus){
        return original + plus;
    }
}

方法使用的常见问题

Attention!

  • 方法的修饰符:暂时都使用public static 修饰
  • 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据
  • 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值
  • 如果方法不需要返回结果,返回值类型必须申明成void(无返回值),此时方法内部不可以使用return返回数据
  • 方法如果没有参数,或者返回值类型申明为void可以称为无参数、无返回值的方法,依次类推

方法案例

计算1-n的值并返回

public class Case1 {
    public static void main(String[] args) {
        System.out.println(sum(100));
    }

    public static int sum(int n) {
        if (n < 0) return 0;

        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        return sum;
    }
}

方法调用的内存图

  • 方法没有被调用的时候,在方法区中的字节码文件中存放
  • 方法被调用的时候,需要进入到栈内存中运行

方法的参数传递机制

值传递
在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递

基本类型参数

传递的是数据值

引用类型参数

传递的是地址值

案例

写一个比较两个int类型数组是否相同的方法

public class Case2 {
    public static void main(String[] args) {
        int[] arr1 = {2, 4, 5, 3, 5};
        int[] arr2 = {2, 4, 5, 3, 5};
        System.out.println(compareIntArray(arr1, arr2));
    }

    public static boolean compareIntArray(int[] arr1, int[] arr2) {
        if (arr1 == null && arr2 == null) return true;

        if (arr1 == null || arr2 == null) return false;

        if (arr1.length == arr2.length) {
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i] != arr2[i]) {
                    return false;
                }
            }
            return true;
        }
        return false;
    }
}

方法重载

一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法
形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称
只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!

public class Case3 {
    public static void main(String[] args) {
        System.out.println(sum(10, 25));
        System.out.println(sum((byte) 2));
    }

    public static int sum(int n) {
        // 计算1-n的和
        return sum(1, n);
    }

    public static int sum(int i, int j) {
        // 计算i-j的和
        if (i > j) return 0;
        int sum = 0;
        for (int k = i; k <= j; k++) {
            sum += k;
        }
        return sum;
    }

    public static int sum(short a) {
        return 0;
    }
}

好像是优先调用最接近的形参,比如传的参数是byte,会优先选择short类型的参数,然后才是int类型的参数

单独使用return关键字

直接结束当前方法的执行

public class Case4 {
    public static void main(String[] args) {
        divide(10, 0);
        divide(9, 5);
    }

    public static void divide(int a, int b){
        if (b == 0){
            System.out.println("除数为零...");
            return;
        }
        System.out.println("结果是:" + (1.0 * a / b));

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值