@Fcy
方法
1.方法的目的
在程序中,为了减少主方法中的代码量,增加代码的美感,可以将部分方法封装起来,在主方法中调用该方法实现该功能。
2.方法的定义
方法有四种类型:
1.无参无返回值类型的方法
public void 方法名(){
}
2.无参有返回值类型的方法
public 返回值的数据类型(如int)方法名(){
}
3.有参无返回值类型的方法
public void 方法名(参数){
}
4.有参有返回值类型的方法
public 返回值数据类型 方法名(参数){
}
参数可以一个或多个,也可以是任意数据类型,包括数组。
可变参数列表
int… n,表示参数为可变任意多个,是int类型的参数。
参数传递问题:
基本类型数据中,调用方法并不会改变主方法中定义的数值。例如:
public class Test2 {
public void exchange(int a,int b){
int temp;
System.out.println("交换前的a:"+a+",b:"+b);
temp =a;a=b;b =temp;
System.out.println("交换后的a:"+a+",b:"+b);
}
public static void main(String[] args) {
int a =10,b=20;
System.out.println("交换前的值是:"+a+" "+b);
Test2 test2 = new Test2();
test2.exchange(a,b);
System.out.println("交换后的值是:"+a+" "+b);
}
}
结果为:
这里可以看到,主方法中定义的a,b只是把该值传给了方法中的参数a,b,在方法里面a,b的值才进行交换,并不会影响主方法中定义的a,b本来的值。
当然,在数组中,情况就有些大相径庭。数组里会直接改变主方法中的数组,得到一个新的数组。
//测试参数为数组方法的传值问题
public class Test3 {
public void change(int[] arr){
arr[3]=10;
System.out.println("调用方法后的数组:");
for (int n:arr){
System.out.print(n+" ");
}
}
public static void main(String[] args) {
int[] arr ={10,40,30,60};
Test3 t3 =new Test3();
System.out.println("改变前的数组:");
for (int n:arr){
System.out.print(n+" ");
}
System.out.println();
t3.change(arr);
System.out.println();
System.out.println("改变后的数组:");
for (int n:arr){
System.out.print(n+" ");
}
}
}
结果:
可以看到,调用方法后,数组也发生了变化。这是因为方法中的参数数组是引用类型,所以它是会直接进入方法里运行,从而发生改变。