方法
何谓方法
Java方法是语句的集合,在一起执行一个功能
Java中的方法为值传递
方法设计原则:原子性,即一个方法完成一个功能,以便于后期扩展
main方法应保持简洁
方法包括方法头和方法体:
- 修饰符
- 返回类型
- 方法名
- 参数类型
- 方法体
修饰符 返回值类型 方法名(参数类型 参数名) {
//方法体
....
return 返回值;
}
return 除了返回结果外,还可以终止方法
方法的重载
一个类中的两个方法,方法名相同,参数类型不同,规则:
- 方法名称必须相同
- 参数列表必须不同(个数、类型、顺序等)
- 返回值可相同可不同
- 仅返回类型不同不构成方法的重载
编译器会根据方法的参数个数、类型等去匹配
package com.sgkurisu.method;
public class Demo1 {
//main方法
public static void main(String[] args) {
int sum1 = add(1, 2);
double sum2 = add(1.0, 2.0);
System.out.println(sum1);
System.out.println(sum2);
}
//add方法的重载
public static int add (int a, int b) {
return a + b;
}
public static double add (double a, double b) {
return a + b;
}
}
命令行传参
package com.sgkurisu.method;
public class Demo2 {
public static void main(String[] args) {
//args数组
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
}
当使用命令行直接在Demo2.java路径下运行时,将会出错
由于以上代码有
package com.sgkurisu.method;
因此需要回退到src目录下运行.class文件(注意:main方法也可以传递参数)
可变参数
- 在可变参数的数据类型后加...
- 一个方法只能指定一个可变参数,并且必须是方法的最后一个参数
package com.sgkurisu.method;
public class Demo3 {
//多个数字比较大小
public static void main(String[] args) {
Demo3 demo3 = new Demo3();
demo3.printMax(3, 5, 3, 66, 23);
demo3.printMax(new double[] {2, 4, 2, 12, 45});
}
public void printMax(double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
//寻找最大值
for (int i = 0; i < numbers.length; i++) {
if (result < numbers[i]) {
result = numbers[i];
}
}
System.out.println("Max:" + result);
}
}
递归
自己调用自己
包含两个部分:
- 递归头:什么时候不调用自身方法,边界条件
- 递归体:什么时候需要调用自身方法
package com.sgkurisu.method;
public class Demo4 {
//用递归实现阶乘
public static void main(String[] args) {
Demo4 demo4 = new Demo4();
System.out.println(demo4.f(3));
}
public int f (int n) {
if (n == 1) {
return 1;
} else {
return n * f(n - 1);
}
}
}
java使用是栈机制,递归对电脑压力较大,时间开销较长

浙公网安备 33010602011771号