数组的传值
public class ArrayDemo {
public void updateArr(int[] a){
a[3] = 15;
System.out.println("数组a的元素为:");
for(int n:a){
System.out.println(n+" ");
}
System.out.println();
}
public static void main(String []args) {
ArrayDemo ad = new ArrayDemo();
int[] a1 = {1,2,3,4,5};
System.out.println("方法调用前数组a1的元素为:");
for(int n:a1){
System.out.println(n+" ");
}
System.out.println();
ad.updateArr(a1);
System.out.println("方法调用后数组a1的元素为:");
for(int n:a1){
System.out.println(n+" ");
}
}
}
结果:
方法调用前数组a1的元素为:
1
2
3
4
5
数组a的元素为:
1
2
3
15
5
方法调用后数组a1的元素为:
1
2
3
15
5
分析:数组属于引用数据类型,在调用方法的同时,方法中数组参数a指向与数组a1同一个内存空间,所以对a数组改变时,会影响a1数组的值。
注意:基本数据类型传参不会对主方法中的原数据的值进行改变
可变参数
public void sum(int... n){
}
案例:
public class sumDemo {
public void sum(int... n){
int sum = 0;
for(int i:n){ //遍历每个参数,直至参数遍历完
sum+=i;
}
System.out.println(sum);
}
public static void main(String []args) {
sumDemo se = new sumDemo();
se.sum(1,2,3,4,5,6);
}
}
结果:21
可以将数组传递给可变参数列表
结论:
public void search(int n,int... a)
等价于
public void search(int n,int[] a)
以上两个方法不能同时在一个类中出现,会报错。
重点:
1、可变参数列表所在的方法是最后被访问的