整数数组如何成为引用类型?

时间:2013-12-17 20:08:00

标签: java arrays reference primitive

BufferedImage image = new BufferedImage(Defaults.SCREEN_WIDTH, Defaults.SCREEN_HEIGHT, BufferedImage.TYPE_INT_RGB);
int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();

我在一个开源项目中发现了这个代码,我只想弄清楚发生了什么。每当我更改“像素”的值时,它就会“写入”缓冲图像。我认为,因为Java中的整数是原始类型,而不是引用类型,当然,整数数组也是如此。所以我想我的问题是,Java中的所有数组引用类型都是什么?

2 个答案:

答案 0 :(得分:4)

由于Chapter 10 of the JLS指定:

  

在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给Object类型的变量(§4.3.2)。可以在数组上调用Object类的所有方法。

是的,所有数组实际上都是对象。

答案 1 :(得分:0)

从我看到的, 我假设类型“DataBufferInt”的定义方式是它从“java.lang.Integer”扩展。
之后,由于Java中的“自动装箱”功能,这些值被保存到int []中,尽管它是原始的。