一、方法定义
方法是实现某个功能的语句块的集合:
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他对方被引用
方法包含一个方法头和一个方法体:
- 修饰符:可选,定义了该方法的访问类型,告诉编译器如何调用该方法
- 返回值类型:没有返回值则使用关键字 void
- 方法名:方法的实际名称,方法名和参数表共同构成方法签名
- 参数类型:参数可选;参数像一个占位符;参数列表是指方法的参数类型、顺序、个数
- 形参:方法接收外界输入的数据
- 实参:实际传给方法的数据
- 方法体:定义该方法的功能
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
注1: return 0 可以终止方法
注2: Java中只有值传递而不存在引用传递【见 C++知识概念一】
- 形参是基本数据类型:将实参基本数据类型变量的"数据值”传递给形参
- 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参
函数调用: 函数名调用【联系重载】
二、方法重载
重载: 在一个类中,有相同的函数名称,但形参不同的函数
重载规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
实现里路: 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错
三、命令行传参
运行一个程序并传递给它参数,而程序的主入口是 main() 函数,观察发现 该函数有一个参数 为 String args[] ,此参数就会接收我们的输入的参数——传递命令行参数
public static void main(String[] args) {
for (int i = 0; i < args.length;i++){
System.out.println("args["+i+"]="+args[i]);
}
}
打开终端: 编译源文件并执行
报错原因:
- src目录只是java默认的源文件路径
- 忽略了package的影响
实际执行时 ,编译器首先根据之前配置的环境变量找到JDK–java命令,然后根据源文件路径往下去寻找 java 命令后所接的class文件名,如果找到并且发现文件中存在包名就会拼接路径,那么现在的执行情况是 :src/method/method/Demo02
解决回退到src目录, 那么执行路径就是 src/method/Demo02
但还要注意的一点, 回退到src目录后,要指定执行的文件在哪里
四、可变参数
JDK1.5开始,Java支持传递同类型的可变参数【重载麻烦】
具体做法:
- 方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能指定一个可变参数,且必须是方法的最后一个参数,反过来说,任何普通的参数必须在它之前声明
public static void main(String[] args) {
Demo03 test = new Demo03();
test.test(1,2,34,5);
}
public void test(int x,int ... i){
for(int index:i){
System.out.println(index);
}
}
五、递归【栈】
递归结构:
- 递归头: 什么时候不调用自身方法;没有头将陷入死循环—>栈溢出
- 递归体: 什么时候需要调用自身方法
注: 可以画一个树