方法定义语法:
访问控制修饰符 返回值类型 方法名(数据类型 形参1,数据类型 形参2……){ return语句; }
说明:
- 访问控制修饰符可以是public、protected、默认(什么都不写)、private
- 如果方法没有返回值,返回值类型为void,方法体中的return语句可以省略,当然也可以写
- 如果方法有返回值,返回值的类型和return语句的类型必须一致
示例:
public class DemoTest {
public static void main(String[] args) {
fun1();
fun2(); //alt+enter
int a = fun3();
String b = fun4();
}
private static String fun4() {
return null;
}
private static int fun3() {
return 0;
}
private static void fun2() {
}
public static void fun1(){
return;
}
}
方法重载
方法重载:一个类中出现的多个方法名称相同但参数不同(参数个数不同、参数类型不同、参数顺序不同)的一系列方法。 注意:方法重载仅仅是和方法的参数有关,和方法返回值类型没有任何关系。
示例:
public class DemoTest {
public void fun() {
}
public void fun(int a) {
}
public void fun(String b) {
}
public void fun(int a, String b) {
}
public void fun(String b, int a) {
}
}
方法的调用
语法规范
- 普通方法之间可以相互调用
- 静态方法之间可以相互调用
- 普通方法可以直接调用静态方法
- 静态方法必须通过类的对象才能调用普通方法
示例:
public class DemoTest {
public void fun1() { //普通方法
fun2();//普通方法之间可以相互调用
}
public void fun2() {//普通方法
fun4(); //普通方法可以直接调用静态方法
}
public static void fun3() {//静态方法
fun4(); //静态方法之间可以相互调用
}
public static void fun4() {//静态方法
//静态方法必须通过类的对象才能调用普通方法
final DemoTest obj = new DemoTest();
obj.fun1();
}
}
方法递归
方法递归,指的是方法调用它自己。
示例:求非波那契数列(1 1 2 3 5 8 13 21 34 55 89 ……)第n项的值
public class DemoTest {
public static void main(String[] args) {
final DemoTest obj = new DemoTest();
System.out.println(obj.fun(40));
}
/**
* 求第n项的值
* @param n
* @return
*/
public int fun(int n){
if (n==1 || n ==2) {
return 1;
}
return fun(n-1)+fun(n-2);
}
}
示例:列出某一文件夹及其子文件夹中所有的文件
public class DemoTest {
public void list(File file) {
file.listFiles(f -> {
if (f.isFile()) {
// 如果是文件,输出
System.out.println(f.getName());
} else {
// 如果是文件夹,继续遍历
list(f);
}
return true;
});
}
public static void main(String[] args) {
File file = new File("D:\\FTP\\workspace\\demo0301");
new DemoTest().list(file);
}
}