Java方法和调用
什么是方法
-
是语句的集合,组合在一起执行一个功能
-
包含于类或对象中
-
在程序中被创建,其他地方被引用
在设计方的时候最好是一个方法完成一个功能,这样有利于后期拓展
比如你要出门,就要开门再出去,你要进门也要开门,再进来。
把开门和进门,出门分开成为3个功能,当你要出门的时候就调用开门和出门方法。
方法的定义和调用
public static 返回类型 方法名称([参数类型 变量, ......]) {
方法体代码;
[return [返回值];]
}
这个返回值可以是int,String,Map等等
参数也可以是多个,用逗号隔开
public class TestDemo {
public static void main(String[] args) {
print(); //主方法里面直接调用方法
}
public static void print() {
System.out.println("Hello World!"); //定义方法
}
public int sumMoney(int money1,int money2){
int money = money1+money2;
return money;
}
}
方法重载
方法重载指的是:方法名称相同,参数的类型和个数不同,或者参数的排列顺序不同
public class TestDemo {
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
public static int add(int x, int y) {
return x + y;
}
//此时方法名称相同,参数的个数不同
public static int add(int x, int y, int z) {
return x + y + z;
}
public static double add(double x, double y) {
return x + y;
}
}
可变参数
参数类型…(三个点) 参数名
可变参数必须写在参数列表的最后面
无法仅通过改变 可变参数的类型,来重载方法。
//可变参数本质上可变参数就是一个数组。所以,数组拥有的方法、属性,可变参数一样拥有。
public void varArgMethod(int b,int... arr) {
//和数组一样,拥有属性length
int lenth = arr.length;
//索引遍历
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
//forEach循环遍历
for(int ele:arr) {
System.out.println(ele);
}
}
方法递归调用
所谓递归就是自己调用自己。
分类
- 直接递归:方法自身调用自己。
- 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法。
注意事项
- 递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverflowError)。
- 递归中虽然限定了停止下来的条件,但是递归次数不能太多,否则也会发生栈内存溢出。
- 禁止构造方法递归。
//使用递归计算10的阶乘
public class FactorialRecursion {
public static void main(String[] args) {
System.out.println(Factorial(5));
}
public static int Factorial(int n){
if (n==1){
return 1;
}else{
return n*Factorial(n-1);
}
}
}
它的原理:
分类: [javaSE]