修改构造器
public class Main { public static void main(String[] args) { int[] OriginalScore = new int[]{88, 77, 51, 66}; Score s = new Score(OriginalScore); s.printScore(); OriginalScore[2] = 99; s.printScore(); } } class Score { private int[] myScore; public Score(int[] OriginalScore) { //this.myScore = OriginalScore; //修改构造器 this.myScore = Arrays.copyOf(OriginalScore, OriginalScore.length); } public void printScore() { System.out.println(Arrays.toString(myScore)); } }
this.myScore = OriginalScore, 是把OriginalScore这个对象内存中的引用地址赋给了myScore, 所以一旦OriginalScore修改了,那么myScore变量也会修改。
this.myScore = Arrays.copyOf(OriginalScore, OriginalScore.length); 是重新创建一个和OriginalScore对象长度和值都一样的新的int类型的数组,并把内存索引地址赋给myScore变量。这样无论OriginalScore怎样修改,都不影响myScore。
Arrays.copyOf(arg1,arg2)是java自带的复制原数组并返回一个新数组的方法,第一个参数是要复制的数组,第二个参数是要复制的长度。
赞~ 超详细
Sign in to make a reply
云外方天
修改构造器