Discuss / Java / 练习

练习

Topic source

云外方天

#1 Created at ... [Delete] [Delete and Lock User]

修改构造器

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自带的复制原数组并返回一个新数组的方法,第一个参数是要复制的数组,第二个参数是要复制的长度。

赞~ 超详细


  • 1

Reply