08.Java 方法
1、方法
- 定义:Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段。
- 语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
修饰符:告诉编译器如何调用该方法。定义了该方法的访问类型。
- 访问修饰符:public 、 private、 protected 、 默认修饰符
- 非访问修饰符:abstract、static、 final、 native 、synchronized
返回值类型 :方法可能会返回值。
- void:没有返回值;
- 数据类型(基本类型,引用类型)。
方法名:是方法的实际名称。
方法体:方法体包含具体的语句,定义该方法的功能。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。
- 形参:在方法被调用时用于接收外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
- 案例1(定义一个没有返回值,没有参数的方法)
public static void main(String[] args) {
//主方法里面直接调用方法
getInfo();
}
public static void getInfo(){
System.out.println("张繁星");
}
案例2(定义一个有参有返回值的方法)
public static void main(String[] args) {
int add = getAdd(10, 20);
System.out.println(add);
}
private static int getAdd(int a, int b){
return a + b;
}
2、方法调用
- Java语言中使用下述形式调用方法:
对象名.方法名(实参列表)
public static void main(String[] args) {
//主方法里面直接调用方法
print("Hello");
print(" world");
print("!");
}
public static void print(String msg) {
System.out.print(msg);
}
2、方法的重载
- 方法重载指的是:在一个类中方法名称相同,参数的类型和个数不同。返回类型可以相同也可以不同。最常用的地方就是构造器的重载。被重载的方法可以改变访问修饰符.
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
private static int add(int x, int y) {
return x + y;
}
private static int add(int x, int y, int z) {
return x + y + z;
}
private static double add(double x, double y) {
return x + y;
}
3、递归
- 方法的递归调用指的是一个方法自己调用自己的形式。
- 要进行方法的递归操作往往都具备有以下的特点:
- 方法必须有一个递归的结束条件
- 方法在每次递归处理的时候一定要做出一些变更
案例(利用代码计算一个数的的乘阶)
public static void main(String[] args) {
//阶乘的结果不能大于int的最大值
System.out.println("请输入你要计算的阶乘整数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int f1 = f(n);
System.out.println(n + "的阶乘结果为:" + f1);
scanner.close();
}
public static int f(int n){
if (n == 1){
return 1;
}else {
return n * f(n-1);
}
}
- 递归的优点就是易理解,容易编程。但递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。
- 能不用递归就不用递归,递归都可以用迭代来代替。