一、方法的使用

文章目录

  • 一、方法的概念
    • 1.1 什么是方法?
    • 1.2 方法的定义
    • 1.3 方法调用的执行过程
    • 1.4 实参和形参的关系
    • 1.5 没有返回值的方法
  • 二、方法的重载
    • 2.1 为什么需要方法重载?
    • 2.2 方法重载的概念

【本节目标】

  1. 掌握方法的定义和使用
  2. 掌握方法传参
  3. 掌握方法重载
  4. 掌握方法递归

一、方法的概念

在程序编写时,我们难免会频繁地写同一段代码,如果每次都将这段代码重新实现一边,将大大增加代码的繁琐程度。在这种情况下,我们可以将这段代码封装成方法,每次要使用时就调用这个方法。

1.1 什么是方法?

方法就是一个代码片段,类似于 C语言中的函数。方法的存在也是模块化编程思想的体现:

  1. 能够模块化地组织代码
  2. 做到让代码被重复使用
  3. 让代码更好理解
  4. 直接调用现有方法,不必重复造轮子

1.2 方法的定义

public static int func(int n){int x = 10;return x;
}
/*
修饰符 返回值类型 方法名(形参...){方法体代码;return ;
}
*/

eg1: 实现一个方法,判断是否为闰年。

public static boolean isLeapYear(int year){if((year%4==0&&year%100!=0) || year&400==0){return true;}return false;
}

注意:

  1. 注意修饰符的搭配。
  2. 在java中,方法必须写在类当中。
  3. 方法不能嵌套定义。
  4. java 中不存在方法声明。

1.3 方法调用的执行过程

在 Java 的方法调用时,有一套基本的流程,由计算机来完成:
调用方法 -->传递参数 -->找到方法地址 -->执行被调用的方法 -->被调方法结束返回 -->回到主调方法继续向下执行
我们可以发现这套流程和C语言中的函数调用是基本一致的。

还有两点注意事项

  • 调用方法时,不会执行方法的代码,调用时才会执行。
  • 一个方法可以多次调用。

1.4 实参和形参的关系

Java 的形参和实参的关系与C语言中的也基本一致。
形参的名字可以随意取,对方法没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。

public static int add(int a, int b){return a+b;
}
int ans = add(2,3); // 2和3 是实参,调用时传给形参 a 和 b。

Java中实参的值永远是拷贝到形参中,形参和实参本质是内存中不同的地址。

我们学过 C语言的知道:可以在调用时将实参地址传给形参,这样可以直接通过地址找到内存中保存的数据,进而直接影响到实参。
但是在Java中,我们无法获取到栈区的地址。不存在取地址的操作。

1.5 没有返回值的方法

class Test{public static void main(String[] args){int a = 10;int b = 20;print(a,b);}// 这里 print 方法的返回类型是 void// 这样的方法不用返回public static void print(int a,int b){System.out.println("x=" + x +" y=" y);}
}

二、方法的重载

方法重载是一个全新的概念。

2.1 为什么需要方法重载?

public class test3 {public static void main(String[] args) {int a = 10;int b = 20;int ret = add(a,b);System.out.println("ret = " + ret);double a2 = 10.5;double b2 = 20.5;double ret2 = add(a2,b2);System.out.println("ret2 = " + ret2);}public static int add(int x,int y){return x + y;}
}// 对于上面的代码,直接执行时会报错:从double转换到int可能会有损失。
// double ret2 = add(a2,b2);

上面 ret2 参数类型和方法不匹配,不能使用add方法,我们可以用方法重载来解决

2.2 方法重载的概念

在自然语言中,一个词语如果有多重含义,那么就说这个方法重载了,在 JAVA 中方法也是可以重载的。
如果几个方法的名字相同,但是参数列表的个数或类型不同,就说这个方法重载了

public class test3 {public static void main(String[] args) {add(1, 2);              // 调用add(int a,int b)add(1.5, 2.5);          // 调用add(double a,double b)add(1.4, 2.4, 3.6);  	// 调用add(double a,double b,double c)// 以上为重载的方法的三个不用形式}public static int add(int a,int b){return a+b;}public static double add(double a,double b){return a+b;}public static double add(double a,double b,double c){return a+b+c;}}

注意:

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同,参数的类型不同)
  3. 与返回值的类型无关
  4. 重载只能出现在一个类或者由同一个类继承的类中
  5. 编译器在编译代码时,会对实参类型进行推演,根据结果确定调用哪个方法。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部