构造函数中写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)); } }
当然,因为克隆的就是修改后的数组。
Sign in to make a reply
_我是来微博看美女的
构造函数中写this.scores = scores.clone()时, 使用的是scores数组克隆出来的另外一个数组,所以当我们每创建一个实例,用的就是克隆出来的跟原scores数组相同的l另外一个数组,当我们对原scores数组进行修改时,就不会影响到已经创建好的实例中的那个数组了。但是如果在修改原scores数组后再创建实例,那么创建的这个实例中的scores数组也是会改变的,详见代码: