java基础--java函数
java函数
一般我们的一个函数只做一件事,我们要尽量保证main
函数整洁
方法重载:
-
方法同名(必须满足)
-
但是传递的形式参数是不一样的(个数不一样或者类型不一样)(必须满足)
-
他们的函数返回值类型可以相同(可选)
-
实现原理:当方法名字相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,已选择对应的方法,如果匹配失败,而编译器报错
//定于两数相加
double sum = add(1.0,2.0);
System.out.println("和"+sum);
//函数(函数一般都不在main里面)
//public,static,都是表示修饰符
//int 表示函数的返回值为int类型,如果无类型,也可以为void
//我们传递的新参一定要带数据类型
public static int add(int a,int b){
return a+b;
}
//我们也可以使用方法的重载
//当我们对传入的参数类型不确定,个数不确定时使用
// 方法的重载
// 1.参数列表改变,方法名不变
// public static double add(double a,double b){
// return a+b;
//}
// 2.再方法重载中,我的方法类型不是一定要改变,可以不变
// public static int add(double a,double b){
// return (int)(a+b);
// }
//比大小
int max = lagger(3,4);
System.out.println("最大的是"+max);
//函数体:
public static int lagger(int a,int b){
return (a-b) > 0 ? a : b;
}
//另一种定义,这种属于对象使用方法
//定义了一个方法,它是属于Function这个类的
Function function = new Function();
int max = function.lagger(3,4);
System.out.println("最大的是"+max);
public int lagger(int a,int b){
return (a>b) >0 ?a:b;
}
方法的调用
-
当函数具有返回值时,我们需要将他赋值给一个变量,在对变量进行输出
int max = lagger(3,4);
-
当函数不具有返回值时,我们直接打印输出即可
function.printMax(1,3,4,5,6,7,8,9,12,2);
可变参数
-
当我们不确定自己会传入几个参数时,我们使用可变参数
-
可变参数一定要放在最后,不可以放在普通参数的前面
-
可变参数,一旦确定了数据类型,那么中间的所有值都必须遵守
-
我们可以简单的将可变参数理解为一个数组,所以一般我们需要对她进行判断是否传入值
// 对于类的方法,先声明对象,他是类Function的对象 Function function = new Function(); // 调用对象里的方法 function.test(1.0,2,3,4,5); public void test(double m,int...i){ System.out.println("第一个普通参数"+m); for(int j = 0;j<i.length;j++){ System.out.println("可变参数数组"+i[j]); } }
递归
-
递归一般我们不太建议使用,除非在面对基数比较小的情况下
-
java属于栈空间,每次调用都会分配一次空间,就会导致空间浪费严重
递归结构分为两个部分
- 递归头:判断出什么时候我们不需要进行递归(一定需要,否则会出现死循环)
- 递归体:什么时候需要调用递归
-
阶乘:
public static void main(String[] args) { // 定义对象 Recursion recursion = new Recursion(); //调用方法 int sum = recursion.factorial(5); System.out.println("阶乘为"+sum); } public int factorial(int n){ // 这个就是递归头 if(n == 1){ return 1; }else { // 递归体 return n*factorial(n-1); } } }