我们可以在 Java 的字节数组中存储的最大元素数量是多少?
What is the maximum amount of elements that we can store in Byte array in Java?
我正在制作水印,因此我将 PNG 图像转换为字节数组,然后在我的代码中对该字节数组的值进行硬编码。
但是,当我使用 100x100 的图像执行此操作时,会出现代码过大的错误,据我所知,此错误是由于支持的字节数组元素大小造成的,实际上只有 64kb .
请告诉我是否有更好的方法来做这件事?
无论数组的类型如何,数组中元素的最大数量为 Integer.MAX_VALUE 或大约 20 亿。
当您在 Java 中初始化一个数组时,它会在代码中进行,一次一个元素。假设您不会在 Java 中初始化大型数组。任何方法的限制,包括用于初始化 Class 或构造函数的静态初始化块,都是 64K,而您似乎正在达到这个限制。
有两种解决方法;
- 从文件中读取数据。那么你最多可以拥有 2 GB - 1 的数组。
- 将数据存储在未以这种方式初始化的字符串中。您可以使用
s.getBytes(StandardCharsets.ISO_8859_1)
将数据转换为 byte[]
很可能最好的选择是将数据存储在文件中。
我正在制作水印,因此我将 PNG 图像转换为字节数组,然后在我的代码中对该字节数组的值进行硬编码。
但是,当我使用 100x100 的图像执行此操作时,会出现代码过大的错误,据我所知,此错误是由于支持的字节数组元素大小造成的,实际上只有 64kb .
请告诉我是否有更好的方法来做这件事?
无论数组的类型如何,数组中元素的最大数量为 Integer.MAX_VALUE 或大约 20 亿。
当您在 Java 中初始化一个数组时,它会在代码中进行,一次一个元素。假设您不会在 Java 中初始化大型数组。任何方法的限制,包括用于初始化 Class 或构造函数的静态初始化块,都是 64K,而您似乎正在达到这个限制。
有两种解决方法;
- 从文件中读取数据。那么你最多可以拥有 2 GB - 1 的数组。
- 将数据存储在未以这种方式初始化的字符串中。您可以使用
s.getBytes(StandardCharsets.ISO_8859_1)
将数据转换为 byte[]
很可能最好的选择是将数据存储在文件中。