本文章参考B站up主遇见狂神说的Java基础课程中的Java方法部分教学视频。笔记只做分享用途。如果有错误欢迎评论区讨论~
方法的定义及调用
- 形式
修饰符 返回值类型 方法名(参数类型 参数名){
···
方法体
···
return 返回值;
}
示例1
package com.kuang.method;
public class demo1 {
//main方法
public static void main(String[] args) {
int sum = add(1, 2);
System.out.println(sum);
}
//加法
public static int add(int a,int b){
return a+b;
}
}
- 比较大小方法max
示例2
package com.kuang.method;
public class demo2 {
public static void main(String[] args) {
int max = max(10,10);
System.out.println(max);
}
public static int max(int num1, int num2){
int result = 0;
if (num1 == num2){
System.out.println("num1 == num2");
return 0; //终止方法
}
if (num1 > num2){
result = num1;
}else if (num1 < num2){
result = num2;
}
return result;
}
}
方法重载
- 在一个类中有相同的方法名称,但是形参不同
- 方法重载的规则
- 方法名称必须相同
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
示例3
package com.kuang.method;
public class demo3 {
public static void main(String[] args) {
double max = max(10.0,20.0);
System.out.println(max);
}
public static int max(int num1, int num2){
int result = 0;
if (num1 == num2){
System.out.println("num1 == num2");
return 0; //终止方法
}
if (num1 > num2){
result = num1;
}else if (num1 < num2){
result = num2;
}
return result;
}
public static double max(double num1, double num2) {
double result = 0.0;
if (num1 == num2) {
System.out.println("num1 == num2");
return 0; //终止方法
}
if (num1 > num2) {
result = num1;
} else if (num1 < num2) {
result = num2;
}
return result;
}
}
命令行传参
示例4
//编写demo4.java文件,在method目录下
package com.kuang.method;
public class demo4 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]"+args[i]);
}
}
}
//打开src文件夹的命令行,然后在命令行输入
//java com.kuang.method.demo4 this is kuang
//其中" this is kuang"是传入的参数,输出的内容为
/*
args[0]this
args[1]is
args[2]kuang
*/
可变参数
- 从JDK1.5开始,Java支持传递同类型的可变参数的一个方法
- 在方法声明中,在指定参数类型后面加一个省略号(…)。
public void test(int... listName){}
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
示例5
package com.kuang.method;
public class demo5 {
public static void main(String[] args) {
demo5 Demo5 = new demo5();
Demo5.test(1,2,3,4,5,6,7);
}
public void test(int x,int... list){
System.out.println(list[5]);
}
}
递归
递归结果包括两个部分:
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
递归体:什么时候需要调用自身方法。
示例6
//计算n!
package com.kuang.method;
public class demo6 {
public static void main(String[] args) {
int result = f(5);
System.out.println(result);
}
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}
边界条件:边界,上面的例子中的n=1
前阶段:上面的例子中的n=5,4,3,2
返回阶段:n*(n-1)