为什么以下代码会引发NegativeArraySizeException
异常?
new BufferedImage(250 * 100, 250 * 100, BufferedImage.TYPE_4BYTE_ABGR);
输出
Exception in thread "main" java.lang.NegativeArraySizeException
at java.awt.image.DataBufferByte.<init>(Unknown Source)
at java.awt.image.Raster.createInterleavedRaster(Unknown Source)
at java.awt.image.BufferedImage.<init>(Unknown Source)
at Main.main(Main.java:120)
是否超出了某些内部缓冲区的限制?
答案 0 :(得分:3)
(250 * 100) * (250 * 100) * 4 = 2500000000
,结果大于int
的最大值:2 ** 31 - 1 = 2147483647
。 The document表示数据将在单个byte
数组中,因此超出了限制。