# 2021-12-06 2021-12-07
1、方法
例: System.out.println(),那么它是什么呢?
- println() 是一个方法。
- System 是系统类。
- out 是标准输出对象。
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
2、方法的定义及调用
(1)定义:
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:方法体包含具体的语句,定义该方法的功能。
包含的基本语法:
1 修饰符 返回值类型 方法名(参数类型 参数名){ 2 ... 3 方法体 4 ... 5 return 返回值; 6 }
(2)调用:
Java 支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
(1)当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30, 40);
(2)如果方法返回值是void,方法调用一定是一条语句。例如,方法println返回void。下面的调用是个语句:
System.out.println("欢迎访问菜鸟教程!");
3、方法重载
定义:如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载。
具体说明:
- 方法名相同
- 方法的参数列表必须不同(参数类型、参数个不一样、顺序不同)
- 方法的返回类型可以不相同
- 方法的修饰符可以不相同
- main 方法也可以被重载
4、命令行传参
命令行执行:
5、可变参数
声明如下:
typeName... parameterName
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
允许在调用方法时传入不定长度的参数。变长参数是 Java 的一个语法糖,本质上还是基于数组的实现。
在定义方法时,在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入。
注意:
-
可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数
-
由于可变参数必须是最后一个参数,所以一个函数最多只能有一个可变参数
-
Java的可变参数,会被编译器转型为一个数组
-
变长参数在编译为字节码后,在方法签名中就是以数组形态出现的。这两个方法的签名是一致的,不能作为方法的重载。如果同时出现,是不能编译通过的。可变参数可以兼容数组,反之则不成立
6、递归
递归结构的两个部分:
- 递归头:什么时候不调用自身方法。存在一种简单情境,可以使递归在简单情境下退出。(递归出口)
- 递归体:什么时候需要调用自身方法。可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用)