整数数组怎么可能是引用类型


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

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

正如JLS的第10章所述:

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

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

据我所知,我假设类型"DataBufferInt"的定义方式是从"java.lang.Integer"扩展而来的。
后来,这些值被保存到 int[] 中,尽管它是原始的,因为 Java 中的"自动装箱"功能。

最新更新