方法的定义
修饰符 返回值类型 方法名 (参数类型 参数名){
、、、
方法体
、、、
return 返回值
}
public class T1 { //求最大值的方法
public static void main(String[] args) {
int max=max(10,20,30);
System.out.println(max);
}
public static int max(int num1, int num2) {
int result = 0;
if (num1 == num2) {
System.out.println("num1==num2");
return 0;
}
if (num1>num2){
result=num1;
}else{
result=num2;
}
return result;
}
}
当方法调用返回一个值的时候,方法调用通常被当作一个值。例如
int larger =max(30.40);
如果方法返回值是void,方法调用一定是一条语句。
System.out.println("hello,world");
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法重载的规则
- 方法名称必须相同
- 参数列表必须相同(个数不同、或类型不同、或参数排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
- 方法可以有无限多重名的,但是要确保参数类型不同
public static int max(double num1, double num2) {
int result = 0;
if (num1 == num2) {
System.out.println("num1==num2");
return 0;
}
if (num1>num2){
result=(int)num1; //把结果强转为int
}else{
result=(int)num2;
}
return result;
}
public static int max(int num1, int num2,int num3) {
int result = 0;
if (num1 == num2) {
System.out.println("num1==num2");
return 0;
}
if (num1>num2){
result=num1;
}else{
result=num2;
}
return result;
}
可变参数
-
在方法声明中,在指定参数类型后加一个省略号(…)
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明。
public class T2 { public static void main(String[] args) { 可变参数 x=new 可变参数(); x.test(1,2,3,4,5); } //只能放在最后面 // 例如 public void test(int...i,int x) 不行 public void test(int...i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); } }
利用可变参数打印最大值
public class T3 { public static void main(String[] args) { //调用可变参数的方法 printMax(12,23,55,46,52); printMax(new double[]{1,2,3}); } public static void printMax(double...numbers) { if (numbers.length==0){ System.out.println("没数据"); return; } double result=numbers[0]; //简单的排序算法 for (int i=1;i<numbers.length;i++){ if (numbers[i]>result){ result=numbers[i]; } } System.out.println("最大值是"+result); } }
递归思想
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
递归体:什么时候需要调用自身方法。
- 递归会带来大量的空间占用,能不用就不用
public class T4 {
public static void main(String[] args) {
System.out.println(f(7));
}
public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
JAVA使用的都是栈机制