我不确定下面两个代码示例之间的区别是什么。 (第一个示例使用standard library中的Picture.java):



//chooses a photo from your computer and reads RGB values from it
Picture mypic = new Picture(FileChooser.pickAFile());
Pixel pixelArray [] = mypic.getPixels();
pixelArray[0].setRed(255);
Pixel currentPixel = pixelArray[0];
currentPixel.setRed(0);
pixelArray[0].getRed()


输出:0


int array[] = new int[4];
array[0] = 1;
int firstElement = array[0];
firstElement = 9;
array[0]


输出:1

为什么第一个代码采样输出0而不是255,为什么第二个代码采样输出1而不是9?

最佳答案

currentPixel是对pixelArray[0]的引用,而不是副本(即,它们指向同一对象)。另一方面,firstElementarray[0]的副本。在大多数情况下,将对象分配给变量时,它将是引用而不是副本。如果要新的Pixel,则必须通过调用构造函数来创建一个。

09-11 18:12