Java方法详解
方法基本概念
package com.arbedu.method; public class Demo01 { // main方法 public static void main(String[] args) { int a; int b; int sum = add(1, 2); // 实际参数,用来调用传递的参数 System.out.println(sum); test(); } // 加法 // a,b形式参数,用来定义作用的 public static int add(int a, int b){ return a + b; } // 循环 public static void test(){ for (int i = 0; i < 10; i++) { System.out.print(i+" "); } } }
package com.arbedu.method; public class Demo02 { public static void main(String[] args) { int max = max(10,20); System.out.println(max); } // 比大小 public static int max(int num1, int num2) { int result; if (num1 == num2) { System.out.println("num is the same"); return 0; // 终止方法 } if (num1 > num2) { result = num1; }else { result = num2; } return result; } }
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
-
方法名称相同
-
参数列表不同(个数不同、类型不同、参数排列顺序不同(可读性差))
-
方法的返回类型可以相同也可以不同
-
仅仅返回类型不同不足以成为方法的重载
-
JVM会对重载自行判断
package com.arbedu.method; public class Demo01 { public static void main(String[] args) { int i; int j; int k; int sum1 = add(1, 2); int sum2 = add(1, 2, 3); double sum3 = add(1.0, 2.0); } // 方法1 public static int add(int a, int b) { return a + b; } // 方法2 与方法1相同 不是方法的重载 报错 //public static int add(int a, int b) { // return a + b; //} // 方法3 public static int add(int a, int b, int c) { return a + b + c; } // 方法4 public static double add(double a, double b) { return a + b; } // 方法5 // public static int add(int b, int a) { // return a+b; // } }
命令行传参
package com.arbedu.method; public class Demo03 { public static void main(String[] args) { for(int i = 0; i < args.length; i++) { System.out.println("args["+i+"]: "+args[i]); } } }
可变参数(不定项参数)
package com.arbedu.method; public class Demo04 { public static void main(String[] args) { // 调用可变参数的方法 printMax(34, 4, 4, 1,94); } public static void printMax(double... numbers) { if(numbers.length == 0) { System.out.println("No arguments passed"); return; } double result = numbers[0]; // 排序 for (int i = 1; i < numbers.length; i++) { if(numbers[i] > result) { result = numbers[i]; } } System.out.println("The max value is "+result); } }
递归
能不用递归就不用递归
package com.arbedu.method; public class Demo05 { public static void main(String[] args) { System.out.println(f(4)); } public static int f(int n){ if(n == 1) { //限制条件 return 1; }else{ return n*f(n-1); } } }