我不确定下面两个代码示例之间的区别是什么。 (第一个示例使用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]
的引用,而不是副本(即,它们指向同一对象)。另一方面,firstElement
是array[0]
的副本。在大多数情况下,将对象分配给变量时,它将是引用而不是副本。如果要新的Pixel
,则必须通过调用构造函数来创建一个。