java狂神方法

一、方法是什么

原子性:一种方法只能完成一个功能,这样利于后期拓展。

下面来展示一个简单的方法:

这个是比较简单的方法。

二、方法的构成

 

 

(viod表示空的意思)

具体的写法是这样的:

在看一个简单的方法:

三、方法的调用

四、方法重载

重载就是在一个类中,有相同的函数名称,但是形参不同的函数。

五、可变参数

来看例子,

其实这个例子中有许多我都不太明白,在后面的学习中应该能懂。

六、递归

 

递归简单来说就是数学里的 “!”举个例子:

1!=1

2!=2*1

3!  =3*2*1

5!=5*4*3*2*1

...

 

 

这就是用代码的形式表达递归,可以看到在sout里面输入对应的数,方法就能计算出对应数的递归。

我们来解释一下f(4)在递归里面的演示过程:可以看到方法里面有n*f(n-1),所以输入4可以得到4*f(3),而f(3)仍然是方法里面的字符,所以f(3)仍然会走方法,得到3*f(2),以此类推...

当得到f(1)=1时,这一串数字里面就没有方法的f了,就可以一个一个往回乘了,最终就是1*2*3*4=24。在这个过程中大致可以分为这样几个阶段:

(图中是以f(5)为例,实际不影响)

一个是边界条件,就是使这个停止的一个条件,在本例中f(1)=1就是边界条件,因为当数字乘到1时就不会再出现f方法了;

一个是前阶段,可以理解为f(4)=4*f(3),f(3)=3*f(2)...这个阶段,在这个阶段的目的可以看作把所有算式中的f方法都去除,去除到没有f方法就可以进行下一阶段了;

最后一个是返回阶段,也就是4*3*2*1这个阶段,得出最后的数为24。

七、作业

这一章的作业是写一个计算器,一开始我打算用scanner实现交互,在用方法写加减乘除,然后在scanner中识别输入的符号就能调用相应的方法,但最后发现在写方法的时候无法实现类似if(num1+num2){}这样的语句,所以就g了。最后还是在网上找到了大佬码的内容,试着理解了一遍,也写出来了。在这个过程中我发现自己用scanner后不关闭,而且写switch也没有加break,导致出现穿透现象,一开始还想不明白,后面一看才知道...说明基础还是没有掌握牢固。最后打上自己写的作业:

最后实现的交互是这样子的:

方法的学习到这里就结束啦!