目录
前言
Hi~ 你好!
欢迎点击我的博客 : )
这是我的学习总结,希望也能帮助到你
我的博客地址:hi~,我在这里~,欢迎关注哦,
三连不迷路,优质内容持续更新!
1.方法概念
1.1 什么是方法(method)
方法就是一个代码片段. 类似于 C 语言中的 "函数"
1.2方法存在的意义
1.能够模块化的组织代码
2.代码能重复使用3.便于理解4.直接调用现成的
1.3 方法定义
// 方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
1.3.1 注意事项
1.方法名采用小驼峰命名 maxNumber
2.在 java 当中,方法必须写在类当中3.在 java 当中,方法不能嵌套定义4.如果方法有返回值,返回值类型必须要与返回的实体类型一致,没有返回值写void
1.4 方法调用的执行过程
调用方法 --- > 传递参数 --- > 找到方法地址 --- >--> 执行被调方法的方法体 --- > 被调方法结束返回 --- > 回到主调方法继续往下 执行
1.5 实参和形参的关系
Java中方法的形参就相当于 sum 函数中的自变量 n ,用来接收 sum 函数在调用时传递的值的。形参的名字可以随意取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值
public static void main(String[] args) {
System.out.println(add(3, 4));
//4和3是实参,在调用时传给形参a和b
}
public static int add(int a,int b){
return a+b;
}
在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体
对于基础类型来说, 形参相当于实参的拷贝. 即传值调用
2. 方法重载
2.1 方法重载概念
在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。在 Java 中方法也是可以重载的。在 Java 中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了 。
2.2 注意事项
1. 方法名必须相同2. 参数列表必须不同 ( 参数的个数不同、参数的类型不同、类型的次序必须不同 )3. 与返回值类型是否相同无关
2.3 方法签名
在同一个作用域中不能定义两个相同名称的标识符方法签名:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名 + 参数列表 + 返回值类型,构成 方法完整的名字。
3. 递归
3.1递归的概念
一个方法在执行过程中调用自身
,
就称为
"
递归
".
递归相当于数学上的
"
数学归纳法
",
有一个起始条件
,
然后有一个递推公式
.
eg:求 N!起始条件 : N = 1 的时候 , N! 为 1. 这个起始条件相当于递归的结束条件 .递归公式 : 求 N! , 直接不好求 , 可以把问题转换成 N! => N * (N-1)!
3.1.1递归的必要条件
1. 将原问题划分成其子问题,子问题必须要与原问题的解法相同2. 递归出口
3.1.2 代码示例:递归求n的阶乘
3.2 关于 "调用栈"
方法调用的时候, 会有一个 " 栈 " 这样的内存空间描述当前的调用关系 . 称为调用栈每一次的方法调用就称为一个 " 栈帧 "每个栈帧中包含了这次调用的参数是哪些 , 返回到哪里继续执行等信息 ..
3.3 递归练习
1.按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public static void main(String[] args) {
int n =1234;
printAll(n);
}
public static void printAll(int n){
if (n<10){
System.out.println(n);
}else {
System.out.println(n % 10);
printAll(n/10);
}
}
2.求斐波那契数列的第 N 项
1.递归
public static int fibonacciNumbers(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacciNumbers(n - 1) + fibonacciNumbers(n - 2);
}
}
2.循环
public static int fibonacciNumbers(int n) {
int first = 0; //确定第0项和第1项
int second = 1;
int result = 0;
if (n == 0) {
result = first; //当项数是0的时候,返回0项上的数
} else if (n == 1) { //当项数是1的时候,返回1项上的数
result = second;
} else {
for (int i = 2; i <= n; i++) { //从第二项开始,项数的结果等于前两项之和
result = first + second; //分别迭代前两项的值
first = second;
second = result;
}
}
return result;
}
后记
看到这里,希望能帮到你~
您的点赞 ,收藏 ,关注 是我创作的最大动力!
同时也欢迎在评论区进行交流,共同进步~