method方法:具有特定功能的代码块。
一、特点:
- 在程序中,方法不调用不执行。
- 方法需定义在类中,方法外。即方法不可嵌套。
- 方法根据方法名调用。
- 在方法体中定义的参数只在该方法体中有效。
- 参数列表可有可无,也可以有多个参数。
即方法名(数据类型 参数名1,数据类型 参数名2...)
二、有返回值类型的方法
(一)定义
修饰符 返回值类型 方法名([参数列表]){
语句;
return 返回值;
}
(二)举例
public static double getPi(int i){//定义一个getPi方法
double pi=3.14;
System.out.print("pi的值");
return pi;//pi返回的类型是double
}
(三)调用
1. 直接调用:方法名()参数;
public static void main(String[] args){
getPi();
}
注意:该调用无法拿到返回值,所以上述例子会直接输出:pi的值。
2. 赋值调用:数据类型 参数名=方法名(参数);
public static void main(String[] args){
double i=getPi();//调用方法getPi并将返回值赋值给变量i
System.out.print(i);
//输出:pi的值3.14
}
3.输出调用:System.out.println(方法名(参数));
public static void main(String[] args){
System.out.print(getPi());//输出调用会直接输出返回值
//输出:pi的值3.14
}
三、无返回值类型的方法
(一)定义
修饰符 void 方法名([参数列表]){
语句;
[return;]
}
注意:在无返回值类型的方法中return可有可无
(二)举例
public static void getPi(){//定义一个getPi方法
double pi=3.14;
System.out.print("pi的值"+pi);
return;
}
(三)调用
直接调用:方法名()参数;
public static void main(String[] args){
getPi();
}
注意:在无返回值类型的方法中只有直接调用一种调用方法。
四、参数
实际参数:调用有参方法时,函数名后面括号中的参数。即“实参”,存在于主函数中。
形式参数:在定义方法时方法名后面括号中的变量名称即“形参”,存在于函数定义中。
形参与实参要一一对应,有几个形参就有几个实参。
public static void main(String[] args){
int i = 3 , j = 4;
getPi( i , j );//i和j为实参
}
public static double getPi(int i , int j){//i,j为形参
if(i > j )
return i;
else
return j;
}
五、兼容性
(一)实参类型<=形参类型
//实参的类型要小于形参的类型,否则会报错。
public static void main(String[] args){
short i = 3 , j = 4;//实参的类型为short型
getPi( i , j );
}
public static long getPi(long i , long j){//形参的类型为long型
if(i>j)
return i;
else
return j;
}
(二)返回的值的类型<=返回值类型<=接收返回值的类型
public static void main(String[] args){
short i = 3 , j = 4;
long k = getPi( i , j );//接收返回值的变量k的类型为long型
System.out.println(k);
}
public static int getPi(short i , short j){//返回值类型为int
short k;
if(i>j)
k=i;
else
k=j;
return k;//返回值的类型为short型
}
//数据类型范围short<int<long
六、方法的重载
方法的重载指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数的个数或不同类型的参数顺序不同。
(一)举例
public static void s1(int i){
i=1;
}
public static void s1(int i,int j){
i=1;
j=1;
}
(二)注意
- 方法的重载只与方法签名有关,与修饰符的无关,与有无反回值无关,与返回值类型无关,与参数的名字无关。
- 方法签名=方法名+参数列表, 方法签名可以唯一区分一个方法。
- 一个方法的重载特性,是一类中多态的一种体现。
- 一个类中方法是封装的一种体现。
七、方法的递归
方法的递归指在方法的内部自己调用自己。
但是不推荐使用,因为能够使用递归解决的问题循环都能够实现,而且递归容易产生内存溢出的情况。
(一)举例
递归头:停止递归的条件。
递归体:自己调用自己。
//求i的阶乘
public static void test(int i){
if(i){
return i;//递归头
}
return i*text(i-1);//递归体
}
(二)解析
临界条件:停止递归的条件。
递归前进段:到达临界条件之前自己调用自己。
递归后推段:从临界条件开始把结果返回给调用的上一层。