一 什么是方法?
方法就是实现某个过程的行为的描述。
二 方法的作用是什么?
在实际开发过程中,我们的一个程序中可能会重复出现很多次相同的代码,当这些重复代码实现的是同一个功能时,就可以写一个方法实现这个功能,当需要使用这个功能时,只需要调用该方法就行了。
三 方法的定义:
[访问修饰符] [其他的修饰符] 返回值类型 方法名称([方法参数]) [throws 异常列表]{
//方法体 -- 具体实现过程的描述
[return 返回值] //return的作用可以是返回一个值,也可以是结束方法体;
}//中括号中的内容根据实际情况和需求而定,可以没有
根据有无参数和返回值可以划分出下面几种情况:
1.有参数有返回值
例:求数组中所有数据的和
public static double ArraySum(double value[]){
double sum = 0;
for(int i = 0 ; i < value.length;i++){
sum += value[i];
}
return sum;
}
2.无参数无返回值
例:打印这个类的详细描述
public static void printInfo(){
System.out.println("Math这个类主要是进行一些简单的算数运算");
}
3.有参数无返回值
例:输出数组的长度信息
public static void printLength(double value[]){
System.out.println("该数组的长度是:"+value.length);
}
4.无参数有返回值
例:请给我一个随机的1-100以内的数字
public static int randNumber(){
Random rd = new Random();
return rd.nextInt(100);
}
有无参数主要是根据实际情况而定,一般是我们定义的方法操作的对象,如第一种情况,我们是求一个数组中所有数据的和,我们是对一个数组中的数据进行操作,所以我们首先要知道是哪个数组,因此我们这个方法的参数就是一个数组。
有无返回值主要是根据主程序需不需要方法的回馈来决定的,同样一第一种情况中求数组中所有·数据之和为例,这个方法的作用是求出数组中所有数据的和,那么我们调用这个方法肯定是希望这个方法为我们返回我们指定数组中所有数据的和,所以我们需要返回这个指定数组中的所有数据的和,返回值的类型根据我们需要返回的数据的类型来定。
最后需要注意的是一个方法只能完成一个功能,这是方法定义的“单一性原则”。
例一:
定义一个方法,查找某个数组中是否包含指定的值
/*
* 返回值: boolean 表示是否包含
* 参数:
* -values[]: 查找的数组
* -number: 被查找的值
* */
public static boolean contanis(int values[],int number){
for(int i = 0 ; i < values.length; i++){
if(values[i] == number){
return true;
}
}
return false;
}
例二:
定义一个方法,求某个数组中最大的值。
/*
* 返回值: -int : 最大值的类型
* 参数: -values[]: 被求的数组
* */
public static int max(int values[]){
int maxValue = values[0];
for(int i = 1 ; i < values.length;i++){
if(values[i] > maxValue){
maxValue = values[i];
}
}
return maxValue;
}
四 方法参数
案例:
定义一个方法,完成 a 和 b的值的交换。
public static void change(int a, int b){
//交换a和b的值
int temp = a;
a = b;
b = temp;
}
接着我们在主程序中调用该方法,并输出两个值,看他们是否交换:
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 11;
change(a,b);
System.out.println("a的值为:"+a+" b的值为:"+b);
}
}
输出结果:
可以看见当我调用该方法后,a的值并没有和b的值进行交换。
错误原因是因为值类型的参数变化,实参是不会变化的
方法参数类型
- **值类型参数**
形式参数会发生改变,实际参数不会发生变化。
- **引用类型参数**
形式参数会发生改变,实际参数也会发生改变。
解决方法: 使用引用类型当做方法参数
public static void change(int values[]){
//交换a和b的值
int temp = values[0];
values[0] = values[1];
values[1] = temp;
}