书上说Java程序总是采用按值调用的,方法不能修改传递给它的任何参数变量的内容。下面的代码数组scores传入方法perfect后值却跟数组x一样改变了,这是为什么?
import java.util.*;
public class HelloWorld {
public static void main(String[] args) {
int[] scores=new int[]{89,-23,64,91,119,52,73};
HelloWorld a=new HelloWorld();
a.perfect(scores);
for(int t:scores)
System.out.print(t+" ");
}
//定义方法完成成绩排序并输出前三名的功能
public void perfect(int[] x)
{
for(int i=0;i<x.length;i++)
{
if(x[i]<0||x[i]>100)
x[i]=0;
}
Arrays.sort(x);
System.out.println("考试成绩前三名为:");
System.out.println(x[6]);
System.out.println(x[5]);
System.out.println(x[4]);
for(int r:x)
System.out.print(r+" ");
System.out.println();
}
输出为:
考试成绩前三名为:
91
89
73
0 0 52 64 73 89 91
0 0 52 64 73 89 91
}