Discuss / Java / 这个clone()方法真强

这个clone()方法真强

Topic source

构造函数中写this.scores = scores.clone()时, 使用的是scores数组克隆出来的另外一个数组,所以当我们每创建一个实例,用的就是克隆出来的跟原scores数组相同的l另外一个数组,当我们对原scores数组进行修改时,就不会影响到已经创建好的实例中的那个数组了。但是如果在修改原scores数组后再创建实例,那么创建的这个实例中的scores数组也是会改变的,详见代码:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] scores = new int[] { 88, 77, 51, 66 };      
        Score s = new Score(scores);
        s.printScores();//[ 88, 77, 51, 66 ]
        scores[2] = 99;
        s.printScores();//[ 88, 77, 51, 66 ]
        Score l = new Score(scores);
        l.printScores();//[ 88, 77, 91, 66 ]
    }
}

class Score {
    private int[] scores;
    public Score(int[] scores) {
        this.scores = scores.clone();
    }

    public void printScores() {
        System.out.println(Arrays.toString(scores));
    }
}

kih7y89132

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

当然,因为克隆的就是修改后的数组。


  • 1

Reply