p47 方法的重载又称 @overload
1、重载就是在同一个类中定义多个方法,这些方法完成相似的功能,方法名相同,但形参列表不同
- 这些方法的功能相似,方法名必须相同
- 参数列表必须不同,参数的 类型、个数或顺序不同
- 方法名称相同时,编译器会根据参数列表逐个匹配,以选择对应的方法,如果匹配失败则编译器报错
- 返回值类型可以不同,修饰符列表可以不同
2、什么时候使用重载?
- 当同一个类中,方法执行的功能是相似的,建议方法同名,方便程序员编程,就像调用同一个方法似的,代码美观
- 程序员不需要记忆更多的方法名来区分,而是依靠不同的参数列表系统自动选择对应的方法
3、能构成重载的条件?
* 在同一个类当中
* 方法名相同
* 参数列表不同:类型、顺序、个数
4、重载和什么无关?
* 和方法的返回值类型无关
* 和方法的修饰符列表无关
//例如
//以下两个方法构成重载
public static void m1(){}
public static void m1(int a){}
//以下两个方法构成重载
public static void m2(int a, double b){}
public static void m2(double a, int b){}
//以下两个方法构成重载
public static void m3(int a){}
public static void m3(double a){}
p48 命令行传参
1、当一个程序运行的时候希望给它传递消息,需要传递命令行参数给 main()函数实现
public class CommandLine { public static void main(String[] args) { System.out.println(args.length); for ( int i=0; i<args.length; i++) { System.out.println ("args[" + i + "]:" + args[i]); } } }
Terminal:
javac -encoding utf-8 CommandLine.java
java packageName.CommandLine this is kuangshen
- 3
- args[0]: this
- args[1]: is
- args[2]: kuangshen
在命令行进行编译 javac:将命令行路径定位在 .java文件所在的目录,编译 .Java文件,生成 .class文件
在命令行运行 java:将命令行路径定位在 src主类目录,运行 .class文件,并传递参数(因代码头有包声明语句 package packPath,故需退至主类目录下运行)
p49 方法的可变参数
1、可变参数:方法声明中参数类型后加一个省略号 ...
- 可变参数的本质是一个数组
- 一个方法中只能指定一个可变参数,而且必须是最后一个参数,任何普通的参数必须在它之前声明
- 所有传递参数必须是同一个类型
p50 递归
1、递归:就是A方法调用A方法!自己调用自己
- 利用递归可以用简单的程序来解决一些复杂的问题。递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算。递归的能力在于用有限的语句来定义对象的无线集合
- 递归结构包括两个部分:
- 递归头:决定了什么时候不调用自身。没有头则陷入死循环
- 递归体:调用自身方法语句
//即使再小的帆也能远航2021-12-17