方法的本意是功能块,就是实现某个功能的语句块的集合、我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展。
public class Demo01 { //main方法 public static void main(String[] args) { int sum = add(1, 2); System.out.println(sum); } //加法 public static int add(int a,int b){ return a+b; } }
方法
和一个方法体
,下面是一个方法的所有部分: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 = 0; if (num1==num2){ System.out.println("num1==num2"); return 0;//中止方法 } if (num1>num2){ result = num1; }else{ result = num2; } return result; } }
被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
public static void main(String[] arguments) { // ... }
修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 return 返回值; //返回值要与返回值的类型对应 }
有返回值时
//比大小的方法 public static int max(int num1,int num2){ int result = 0; if (num1==num2){ System.out.println("num1==num2"); return 0;//中止方法 //比大小的方法调用; int larger=max(30,40)
调用方法:对象名.方法名(实参列表)
当方法返回一个值的时候,方法通常被当做一个值,如果返回方法是void,方法调用一定是一条语句
重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法重载的规则:
方法名称必须相同
参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
方法的返回类型可以相同也可以不相同
仅仅返回类型不同不足以成为方法的重载
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
//方法1 public static int add(double a, double b){ return a+b; } //方法2 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;}
public class Demo03{ public static void main(String[] arg){ //此为方法的重载,简单解释为方法名相同,但值可能不同不起冲突实现重载的功能。 //方法重载的规则: // .方法名必须相同 // .参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等) // .方法返回值类型可以相同也可以不相同 // .仅仅返回类型不同不足以成为方法的重载 int sum = add(1,2); int sum1 = add(1,2,3); System.out.println(sum); System.out.println(sum1); } public static int add(int a, int b){ return a+b; } public static int add(int a, int b, int c){ return a+b+c; } }
有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。
public class Demo04{ public static void main(String[] args) { //数组的长度 for (int i = 0; i < args.length; i++) { System.out.println("args[" + i + "]:" + args[i]); } } }
编译并输入参数(“你好!” 和 ”你 好 !”)
public class Demo05 { public static void main(String[] args){ Demo max = new Demo(); max.printMax(45,78,96,74,52,63,82,71,93); } //可变参数 public void printMax(double... i){ if (i.length == 0){ System.out.println("You didn't type the numbers"); return; } //比较大小 double max = i[0]; for (int j=1 ; j<i.length ; j++){ if (i[j] > max){ max = i[j]; } } System.out.println("The maximum number is "+max); } }
递归就是自己调用自己。
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
注意点:
计算5的阶乘
public class Demo06 { public static void main(String[] args) { System.out.println(f(5)); } public static int f(int n) { if (n==1){ return 1; }else { return n*f(n-1); } } }