赞
踩
看到这句话的时候证明:此刻你我都在努力~
加油陌生人~
个人主页:Gu Gu Study
专栏:一步一步了解Java
喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹。
_ 如果喜欢能否点个赞支持一下,谢谢啦!_
作者:小闭
引言:相信大家在学习C语言后再学习Java时就经常听到有人说到”方法“,但是当你看到他们所说的方法时,你就会就会感觉到熟悉,你可能就会觉得这不就是C语言中的函数吗?那么Java中的方法和C语言中的有什么不一样吗?其实这两者确实区别不大,甚至可以说一样,只不过C语言面向过程的语言而Java是面向对象的语言。所以叫法上是有一点区别的。那么下面我们就来学习一下Java中的方法的知识吧。
在我看来方法就是将一些代码封装起来的一片代码块,这个代码块可以完成一个单独的功能比如:加法,加法,除法等。再比如:面向对象时有个对象的“说话”功能。
方法存在的意义:
给大家举一个例子:
public static void func1() {
int year = 1900;
if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {
System.out.println(year + "年是闰年");
} else {
System.out.println(year + "年不是闰年");
}
}
如上就是Java中的一个方法,确实与C语言的函数差不多,差别就是语法上的不一样。上面的代码就是:将判断一个年份是否为闰年的代码写到这一块地方,而这一块地方就是方法。
** 修饰符 返回值类型 方法名称(参数类型 形参 ){ **
**方法体代码; **
return 返回值;
** } **
其中返回值也可以没有,这时返回值类型就为void。
如下我们就示例一下:
public static void func1() {
int year = 1900;
if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {
System.out.println(year + "年是闰年");
} else {
System.out.println(year + "年不是闰年");
}
}
在定义一个实现加法的方法:
public static int func2(int a,int b){
return a+b;
}
注意事项:
- 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成
void- 方法名字:采用小驼峰命名
小驼峰即:setName,setNum,亦或是find,found。- 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
- 方法体:方法内部要执行的语句
- 在java当中,方法必须写在类当中
- 在java当中,方法不能嵌套定义
- 在java当中,没有方法声明一说
- 【方法调用过程】 调用方法—>传递参数—>找到方法地址—>执行被调方法的方法体—>被调方法结束返回—>回到主调方法继续往下 执行
如下是一个完整的方法运用过程:
public class Main { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 5; i++) { sum += fac(i); } System.out.println("sum = " + sum); } public static int fac(int n) { System.out.println("计算 n 的阶乘中n! = " + n); int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } }
那么何为实参何为形参呢?下面我们通过一个代码进行详细解析:
public static int fac(int n) { //这里n为形参
System.out.println("计算 n 的阶乘中n! = " + n);
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
public static void main(String[] args) {
int n=5;
int num=fac(n); //这里n为实参
System.out.println(c);
}
调用方法时,给方法传值的是实参,拷贝传来的值的变量为形参。
注意:
Java中没有C语言中的传值调用和传址调用的区别。Java中无法拿到实参的地址的,所以可以简单的理解为如果传参传时的数据类型为_基本类型数据_那么这就是相当于C语言的传值调用 。对此的总结还是那句话。
总结:形参只是实参的临时拷贝,形参的改变不会影响实参。(这是针对基本数据类型来说的)
如下:
public static void main(String[] args) {
int a = 10;
int b = 20;
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);
}
实参a和b是main方法中的两个变量,其空间在main方法的栈(一块特殊的内存空间)中,而形参x和y是swap方法中 的两个变量,x和y的空间在swap方法运行时的栈中,因此:实参a和b 与 形参x和y是两个没有任何关联性的变量, 在swap方法调用时,只是将实参a和b中的值拷贝了一份传递给了形参x和y,因此对形参x和y操作不会对实参a和b 产生任何影响。
方法名相同:重载的方法必须具有相同的方法名。
参数列表不同:参数列表可以是参数数量不同,参数类型不同,或者参数顺序不同。
返回类型可相同可不同:方法的返回类型可以相同,也可以不同,但这并不是重载的决定性因素。
3. 方法重载的优点:
代码复用:通过重载,可以复用相同的方法名,减少代码冗余。
提高代码可读性:使用相同的方法名可以提高代码的可读性,使得代码更加直观易懂。
增强灵活性:允许开发者根据不同的参数类型调用不同的方法,增强了程序的灵活性。
4. 方法重载的实现
以下是Java语言中实现方法重载的一个简单示例:
public class Calculator {
// 加法方法重载示例
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
在这个例子中,Calculator类定义了三个add方法,它们具有相同的方法名,但是参数列表不同。
了解递归思想
把⼀个大型复杂问题层层转化为⼀个与原问题相似,但规模较小的子问题来求解;直到子问题不能再 被拆分,递归就结束了。所以递归的思考方式就是把大事化小的过程。 递归中的递就是递推的意思,归就是回归的意思,接下来慢慢来体会
递归的两个重要条件
**递归在书写的时候,有2个必要条件:
一、递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。 **
二、每次递归调⽤之后越来越接近这个限制条件。
下面是一个求3的阶乘的代码,运用递归来完成。
public class Test { public static int function(int n){ if(n==1){ //递归终止条件 return 1; } else{ //递归调用 return function(n - 1) * n; } } public static void main(String[] args) { int num = 3; int ret =function(num); System.out.println(ret); } }
下面给大家画一下一个大概的流程图
以上就是今天的所有的知识了,喜欢的话可以点个赞哦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。