JavaSE方法的使用

Java SE方法的使用

1. 方法的概念及使用

1.1 什么是方法

方法就是一个代码片段,它能够使得代码被重复使用,一份代码可以在多个位置被使用

1.2 方法定义

修饰符 返回值类型 方法名称([参数类型 形参]){
	方法体代码; //[]表示内容可以存在或省略
	[return 返回值]
}

注:

  1. 修饰符:也称访问限定修饰符,包括private, default(默认), protected, public,构建方法一般使用 public static 固定搭配
  2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须使用void类型
  3. 方法名字:一般采用小驼峰命名 ( addSum )
  4. 参数列表:如果方法没有参数,则()中什么都不写;如果有参数,需要指定参数类型,多个参数之间用逗号隔开
  5. 方法体:方法内部要执行的语句
  6. 在java当中,方法必须写在类当中,且不能嵌套定义
  7. 方法可以没有返回值,没有返回值时返回值类型必须写成void

代码示例:

public class Test {

        //定义一个使两个整数相加的方法
        public static int sum5(int a, int b) {
            return a + b;
        }

        public static void main(String[] args) {
            int x = 1, y = 2;
            System.out.println(sum5(x, y));

        }
}

在这里插入图片描述

1.3 方法调用的执行过程

[方法调用过程]

调用方法–> 传递参数–>找到方法地址–>执行被调方法方法体–>被调方法结束返回–>回到主调方法往下继续执行

注:

  • 定义方法的时候,不会执行方法的代码,只有调用的时候才会执行
  • 一个方法可以被多次调用

代码示例:

public class Test {
    public static int fac(int n) { //方法fac,计算单个数字的阶层
        int ret = 1;
        for (int i = 1;i <= n;i++) {
            ret *= i;
        }
        return ret;
    }

    public static int facSum(int k) {
        int sum = 0;
        for (int j = 1;j <= k;j++) {
            sum += fac(j); //在这个方法里面调用方法fac来计算单个数字的阶层,如5!,然后通过循环将这些阶层都加起来
        }
        return sum;
    }

    public static void main(String[] args) {
		//计算1到5的阶层之和
        System.out.println(facSum(5)); //结果输出153

    }
}

在这里插入图片描述

1.4 形参和实参的关系

形参是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体

代码示例:

public class Test {
	public static void main(String[] args) {
        int a = 10;
        int b = 25;
        swap(a, b);
        System.out.println("main: a = " + a + "b = " + b);
    }
    public static void swap(int x, int y) {
        int tmp = x;
        x = y;
        y = tmp;
        System.out.println("swap: x = " + x + "y = " + y);
    }
}

在这里插入图片描述

注:从代码运行结果可以看到,调用swap函数交换后,形参x和y的值发生了改变,但main方法中a和b的值却没发生改变

原因分析

实参a和b是main方法中的两个变量,其内存空间在main方法的栈(JVM,即ava虚拟机栈)中,而形参x和y是swap方法中的两个变量,x和y的空间在swap方法运行时的栈中

在这里插入图片描述

因此:实参a和b与形参x和y是两个没有任何关联性的变量,在调用swap方法时,只是将实参a和b中的值拷贝一份传递给了形参x和y,因此对形参x和y操作不会对实参a和吧产生任何影响

**解决方法:**传引用类型参数(这里利用数组来进行传参)

代码示例:

public class Test {
     public static void main(String[] args) {
        int[] arr = {10, 20};
        System.out.println("交换前:arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
        swap(arr);
        System.out.println("交换后:arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    }
    public static void swap(int[] arr1) {
        int tmp = arr1[0];
        arr1[0] = arr1[1];
        arr1[1] = tmp;
    }
}

在这里插入图片描述

由运行结果可知,这里的swap方法实现了数值的交换,这里运用了数组来进行传参,通过swap方法将数组arr的地址复制给arr1,使得arr1也能修改arr数组中的值

![在这里插入图片描述](https://img-blog.csdnimg.cn/e3efc8caf1624a7aa958eb8e0667c415.png#pic_center

2. 方法重载

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了

代码示例:

public class Test {
	public static void main(String[] args) {
        System.out.println(add(1, 2)); // 调用add(int x, int y)
        System.out.println(add(1.5, 2.5)); // 调用add(double x, double y)
        System.out.println(add(1.5, 2.5, 3.5)); // 调用add(double x, double y, double z)

    }

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

在这里插入图片描述
注:

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同、参数的类型不同、参数的次序不同)
  3. 与返回值类型是否相同无关
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值