在Java中,字节数组中最多可以存储多少元素?

在Java中,字节数组中最多可以存储多少元素?,java,android,bytearray,Java,Android,Bytearray,我正在研究水印,所以我将PNG图像转换为字节数组,然后在代码中硬编码该字节数组的值 但当我使用100x100的图像执行此操作时,它会给出一个错误,即代码太大,据我所知,此错误是由于支持的字节数组元素的大小,实际上只有64kb 请告诉我是否有更好的方法来做这件事?数组中的最大元素数是整数。MAX\u值或大约20亿,无论数组的类型如何 在Java中初始化数组时,它会在代码中初始化,每次初始化一个元素。假设您不会在Java中初始化大型数组。任何方法(包括初始化类或构造函数的静态初始化块)的限制都是64

我正在研究水印,所以我将PNG图像转换为字节数组,然后在代码中硬编码该字节数组的值

但当我使用100x100的图像执行此操作时,它会给出一个错误,即代码太大,据我所知,此错误是由于支持的字节数组元素的大小,实际上只有64kb


请告诉我是否有更好的方法来做这件事?

数组中的最大元素数是整数。MAX\u值或大约20亿,无论数组的类型如何

在Java中初始化数组时,它会在代码中初始化,每次初始化一个元素。假设您不会在Java中初始化大型数组。任何方法(包括初始化类或构造函数的静态初始化块)的限制都是64K,您似乎正是达到了这个限制

有两种方法可以解决这个问题

  • 从文件中读取数据。然后您可以拥有高达2GB-1的阵列
  • 将数据存储在不以这种方式初始化的字符串中。您可以使用
    s.getBytes(StandardCharsets.ISO_8859_1)将数据转换为字节[]

最好的选择很可能是将数据存储在文件中。

但是一个像素!=一个字节。PNG图像每像素有4个值(R、G、B、Alpha)。但这还不到64k。你在说什么?字节[]字节=新字节[长度];长度为int。同样bytes.length返回int。因此可以将兆字节放入字节数组。
代码太大。
?您的意思是“数组太大”?很可能是转换代码中的错误。您可以在数组中放入2GB的数据