Java 中的方法是和C语言中的函数的功能是相同的
假设我们需要频繁的使用某个代码,就可以用方法进行封装,在需要时直接调用
方法的优点:
例如:

public static 是方法必须写的修饰符int 是你传递数值的类型,传什么类型写什么参数add 是方法的名称,是自定义的,在Java 中方法名都是用 小驼峰 命名方法的参数列表,按照传参时的类型 一 一对应{ ] 大括号里的是方法体,就是这个方法功能的实现return 可写可不写,按照情况而定没有,那可以写成 void例如:
求 1 到 5 的阶乘

在C语言中形参是实参的临时拷贝,对形参的修改是不会影响实参的
如果想要对实参进行修改,就要传实参的地址,C语言是 (&实参)
在 Java 中是不能进行 & 操作的
在Java 的解决办法是:传引用类型参数
之后会详细讲
public class TestMethod {
public static void main(String[] args) {
int[] arr = {10, 20};
swap(arr);
System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
}
public static void swap(int[] arr) {
int tmp = arr[0];
arr[0] = arr[1];
arr[1] = tmp;
}
}
正常遇到方法功能十分的相似,但是参数不同,都是需要重新写一个方法,而且方法名必须要不一样的,这样就需要记忆更多的方法名称,而且可能记错,导致代码出现问题
这种情况就可以使用 方法重载
方法重载的作用:方法重载作用是可以对 功能相似的方法,使用相同的方法名,更易于以后的代码编写方法重载 的区分:方法重载 的情况下,编译器会通过方法的类型参数进行区分方法重载 的要求:参数的个数不同、参数的类型不同、类型的次序必须不同)例如:
参数数量的不同
public static void main(String[] args) {
add(10);
add(10,15);
}
public static int add(int a) {
return a + 1;
}
public static int add (int a,int b){
return a+b;
}
参数的类型不同
public static void main(String[] args) {
add(10,23);
add(3.5,4.7);
}
public static int add(int a,int b) {
return a + b;
}
public static double add (double a,double b){
return a+b;
}
整形和 浮点型类型的次序必须不同
public static void main(String[] args) {
add(10.5,23);
add(3,4.7);
}
public static double add(double b,int a) {
return a + b;
}
public static double add (int a,double b){
return a+b;
}
接收时顺序不一样方法递归:自己调用自己
方法的递归必须存在二个条件:
限制条件:限制条件是当满足这个限制条件的时候,递归便不再继续
递增条件:每次递归调用之后越来越接近这个限制条件
用方法的递归求 n 的阶乘
public static void main(String[] args) {
int n = 5;
int ret = fac(n);
System.out.println(ret);
}
public static int fac(int n) {
if (n == 1) {
return 1;
}
return n * fac(n - 1);
}
按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
public static void main(String[] args) {
int n = 1234;
ack(n);
}
public static void ack(int n) {
if(n > 10) {
ack(n /10);
}
System.out.println(n % 10);
}
用方法的递归求 1 到 10的和
public static void main(String[] args) {
int ret = adk(1);
System.out.println(ret);
}
public static int adk(int n) {
int sum = 0;
if(n == 10) {
return 10;
}
return n + adk(n+1);
}
活动地址:CSDN21天学习挑战赛