方法的基本用法

1.什么是方法?方法的意义?

1.做到代码被重复使用, 一份代码可以在多个位置使用。
2.配合注释让代码更好理解更简单

3.直接调用现有方法开发, 不必重复造轮子。

回忆一个之前写过的代码: 计算 1! + 2! + 3! + 4! + 5!
 

public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i <= 5; i++) {
        int tmp = 1;
        for (int j = 1; j <= i; j++) {
            tmp *= j;
        }
        sum += tmp;
    }
    System.out.println("sum = " + sum);
}

这个代码中使用双重循环, 比较容易写错.接下来我们可以使用方法来优化这个代码

public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i <= 5; i++) {
        sum += factor(i);
    }
    System.out.println("sum = " + sum);
}

//计算n的阶乘
public static int factor(int n) {
    int ret = 1;
    for (int i = 1; i <= n; i++) {
        ret *= i;
    }
    return ret;
}

2.方法定义语句

基本语法
 

// 方法定义
public static 方法返回值 方法名称([参数类型 形参 ...]){
        方法体代码;
        [return 返回值];
}


// 方法调用
返回值变量 = 方法名称(实参...);

实现一个方法实现两个整数相加

public static void main(String[] args) {
    int a = 10;
    int b = 20;

    int ret = add(a,b);
    System.out.println("ret = "+ret);
}

private static int add(int x, int y) {
    return x + y;
}

注意:

1. 方法定义时, 参数可以没有. 每个参数要指定类型
2. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void
3. 方法定义时的参数称为 "形参", 方法调用时的参数称为 "实参".
4. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.

3.方法调用的执行过程

基本规则:

定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
当方法被调用的时候, 会将实参赋值给形参.
参数传递完毕后, 就会执行到方法体代码.
当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行
一个方法可以被多次调用.
 

示例:

计算两个整数相加

public static void main(String[] args) {
    int a = 10;
    int b = 20;

    System.out.println("第一次调用方法之前");
    int ret = add(a, b);
    System.out.println("第一次调用方法之后");
    System.out.println("ret = " + ret);

    System.out.println("第二次调用方法之前");
    ret = add(30, 50);
    System.out.println("第二次调用方法之后");
    System.out.println("ret = " + ret);
}

public static int add(int x, int y) {
    System.out.println("调用方法中!");
    return x + y;
}

4.实参和形参的关系

先说一下形参和实参的概念:

1.形参:

就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。

形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。

因此,形参只在方法内部有效,所以针对引用对象的改动也无法影响到方法外。


2.实参:

就是实际参数,用于调用时传递给方法的参数。

实参在传递给别的方法之前是要被预先赋值的。


注意:
在值传递调用过程中,只能把实参传递给形参,而不能把形参的值反向作用到实参上。

在函数调用过程中,形参的值发生改变,而实参的值不会发生改变。


而在引用传递调用的机制中,实际上是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。

交换俩个整形变量

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    swap(a, b);
    System.out.println("a = " + a + " b = " + b);
}

public static void swap(int x, int y) {
    int tmp = x;
    x = y;
    y = tmp;
}

//运行结果

a = 10 b = 20

//代码, 没有完成数据的交换

对于基础类型来说, 形参相当于实参的拷贝. 即 传值调用

如果要交换基本类型的数据,需转换成数组,进行交换。

public static void main(String[] args) {
    int[] array = {10, 20};
    System.out.println("转换之前:");
    System.out.println(array[0] + " " + array[1]);

    swap(array);
    
    System.out.println("转换之前后:");
    System.out.println(array[0] + " " + array[1]);
}

public static void swap(int[] array) {
    int tmp = array[0];
    array[0] = array[1];
    array[1] = tmp;

    return;
}

//运行结果

转换之前:
10 20
转换之前后:
20 10

5.没有返回值的方法

方法的返回值是可选的. 有些时候可以没有的.

代码示例:

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        print(a, b);
    }

    public static void print(int x, int y) {
        System.out.println("x = " + x + " y = " + y);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿瞒有我良计15

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

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

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

打赏作者

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

抵扣说明:

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

余额充值