一. 什么是方法?
java对象类似于其他语言的函数。
方法是语句的集合,这个集合完成一个功能。
方法包含与类或对象中
保持一个方法只完成一个功能,有利于后期扩展(原子性)
命名规则:首字母小写和驼峰规则
二.方法的定义与调用
2.1定义方法
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
- 修饰符:可选,告诉编译器如何调用该方法。
- 返回值类型:方法可以返回值。没有返回值的话,用关键字void
- 方法名:方法的实际名称,通过名称可以知道该方法实现什么功能
- 参数:可选
- 形式参数:定义方法时填写,在方法被调用时接收实际参数的值
- 实际参数:调用反法时将数据传给形式参数
- 方法体:定义实现该方法功能的语句
比大小方法:
//比大小
public static int max(int num1, int num2) {
int result = 0;
if (num1 == num2) {
System.out.println("相等");
return 0;
}
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
2.2调用方法
对象名.方法名(实参列表)
调用比大小方法
int max = max(10,20);
当返回值为void时,调用是一条语句,如:
System.out.println("hello");
三.方法重载
重载就是在一个类中,方法名相同,参数不同(包括数据类型不同,数量不同)
- 重载与返回值类型,修饰符无关
- 方法名必须相同
- 参数列表必须不同
- 返回值可相同可不同
- 仅有返回值不同不构成重载
四.命令行传参
我们这里对main方法进行传参
package com.li.www;
public class World {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
在java文件目录下cmd,使用javac编译,生成class文件
将目录切换到src,运行java,并传参
五.可变参数
5.1使用条件
当我们定义一个方法,参数类型确定,但是不确定这个类型参数个数时,可以使用可变参数。
5.2使用方法
修饰符 返回值类型 方法名(参数1类型 参数1,可变参数类型... 可变参数){}
public class World {
public static void main(String[] args) {
//调用可变参数方法
printMax(34, 2, 50, 52.5, 66);
}
//可变参数方法
public static void printMax(double... numbers) {
if (numbers.length == 0) {
System.out.println("没有参数");
return;
}
double result = numbers[0];
//找出最大值
for (int i = 1;i < numbers.length;i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("最大值为:"+result);
}
}
5.3 底层原理
就是创建一个数组,根据参数个数不同,数组长度不同
5.4注意事项
- 一个方法只可有一个可变参数
- 可变参数要位于参数列表的最后
递归
自己调用自己,如A方法调用A方法
递归结构需要包括两部分:
- 递归头:什么时候不调用自身,不定义将陷入死循环
- 递归体:什么时候调用自身
学习递归思想,少用递归
计算阶乘:
public class World {
public static void main(String[] args){
System.out.println(f(5));
}
//计算阶乘
public static int f(int n){
//递归头(边间条件)
if (n == 1){
return 1;
}
//递归体
else{
return n*f(n-1);
}
}
}