“方法”又被称为“函数”,其他的编程语言也有这个概念,重要性不言而喻,在这个文章,将介绍如何定义和使用方法。
在Java中,方法定义在类中,它和类的成员属性(数据成员)一起构建一个完整的类。构成方法有四大类——返回值类型、方法名称、参数、方法体。
方法就像一个功能,当我们需要用到的时候,就去调用它,不用的时候就放到一边。
也可以说它是一本工具书,当我们需要查看的时候,我们就会去找这本书查资料,不用的时候就放在书柜里面。
//方法定义
public static 方法返回值 方法名称([参数类型 形参 …]){
方法体代码;
[return 返回值];
}
// 方法调用
返回值变量 = 方法名称(实参…);
可以看出,方法包含一个方法头和一个方法体。
返回值类型:指定了方法返回的数据类型。它可以是任意有效的类型,包括构造类型(类就是一种构造类型)。如果方法没有返回值,则其返回类型必须是void。方法体中的返回值类型要与方法头中定义的返回值类型一致。
public class TestDemo { public static void main(String[] args) { int a = 10; int b = 20; // 方法的调用 int ret = add(a, b); System.out.println("ret = " + ret); } // 方法的定义 public static int add(int x, int y) { return x + y; } }
形参:
在定义一个方法时,参数列表中的参数个数至少为1个。
实参:
调用方法时,需要调用者提供与原方法定义相匹配的参数(类型、数量、顺序都一致)
那么形参与实参的关系又是怎样的呢?
【概念】
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
认真看下面例子中的add方法
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); double a3 = 10.5; double b3 = 10.5; double c3 = 20.5; double ret3 = add(a3, b3, c3); System.out.println("ret3 = " + ret3); } public static int add(int x, int y) { return x + y; } public static double add(double x, double y) { return x + y; } public static double add(double x, double y, double z) { return x + y + z; }
【总结】
方法的名字都叫 add. 但是有的 add 是计算 int 相加, 有的是 double 相加; 有的计算两个数字相加, 有的是计算三个数
字相加.
同一个方法名字, 提供不同版本的实现, 称为 方法重载
【注意】
一.方法名一定要相同。
二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1.如果参数个数不同,就不管它的参数类型了!
2.如果参数个数相同,那么参数的类型必须不同。
三.方法的返回类型、修饰符可以相同,也可不同。
data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv') print(data.head())
简单来说,递归算是套娃。
从前有座山,山里有座庙,庙里有个老和尚,老和尚正在给小和尚讲故事:从前有座山,山里有座庙,庙里有个老和尚,老和尚正在给小和尚讲故事:…
除非老和尚不讲了,否则这个故事就一直套娃下去。
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
举个例子:递归求 N 的阶乘
public static void main(String[] args) { int n = 5; int ret = factor(n); System.out.println("ret = " + ret); } public static int factor(int n) { System.out.println("函数开始, n = " + n); if (n == 1) { System.out.println("函数结束, n = 1 ret = 1"); return 1; }else{ int ret = n * factor(n - 1); System.out.println("函数结束, n = " + n + " ret = " + ret); return ret; } }
分析递归过程如下:
递归算法一般用于解决三类问题:
【注意】
虽然递归操作有很多的优点,但是缺点也很明显
下面给大家推荐递归的两个经典例题:
有兴趣的同学可以去自行尝试!
最近在看《士兵突击》,迷惘了,希望能够找点东西激励自己。《士兵突击》在某种程度上,真的让我感悟良多。推荐大家去看看。
里面的台词让我受益良多。
“心稳了,手也就稳了”
“想到和得到之间还有两个字,就是做到”
各位,共勉了!