如何在java中使字符串存储32000个字符?

如何在java中使字符串存储32000个字符?,java,Java,我对Java非常陌生 我想将图像像素存储在字符串中。但是现在如果图像有超过4000个像素,我无法将所有字符存储在一个字符串中 如何定义一个字符串来存储更多字符?出现了什么错误java.lang.String仅受内存限制。您可以使用-Xmx参数增加VM的堆大小 java -Xmx1024m my.Thingy 将1024 MB内存设置为java堆大小。如果确实需要以字符串形式存储字节数组,正确的方法是将其编码为。具有可执行此操作的Base64实用程序类。字符串最多可包含20亿个字符。也许您可以解

我对Java非常陌生

我想将图像像素存储在字符串中。但是现在如果图像有超过4000个像素,我无法将所有字符存储在一个字符串中


如何定义一个字符串来存储更多字符?

出现了什么错误<据我所知,code>java.lang.String仅受内存限制。您可以使用
-Xmx
参数增加VM的堆大小

java -Xmx1024m my.Thingy

将1024 MB内存设置为java堆大小。

如果确实需要以字符串形式存储字节数组,正确的方法是将其编码为。具有可执行此操作的
Base64
实用程序类。

字符串最多可包含20亿个字符。也许您可以解释一下,当您尝试将图像的所有字节存储在字符串中时会发生什么情况?可能您遇到了编码问题,因为字符串不是用于存储二进制数据的

在字符串中存储二进制数据的最简单/最安全的方法是使用直译,而不是使用可以管理数据的编码

byte[] bytes
// takes each byte as is with 0 as the "high" byte.
String string = new String(bytes, 0); 

首先,如果您主要关心的是在字符串中存储大量字符,据我所知,它的唯一约束是String length()方法,它返回一个int(因此您仅限于MAX_int chars)和JVM内存,您可以按照Martin的指示更改它。要在eclipse中实现这一点,您必须编辑当前的运行配置,并且您将找到一个名为“Arguments”的选项卡,您可以在其中放置所有参数(java命令本身除外)

关于查找“Hello”这个词,我打赌我会使用一个char数组并自己编写循环。Java中的字符串行为可能会受到区域设置和字符编码的影响,因此可能会弄乱结果。不管怎样,你的建议听起来像是隐写术。事实上,有一些文献是关于寻找图像是否包含隐写术隐藏的数据并将其提取的技术的,因此,也许你应该将研究重点放在隐写分析上(不确定这是否是正确的词)


干杯。

你到底为什么要将图像像素存储在字符串中而不是使用字节或整数数组?我想看看是否在图像像素中找到了特定的模式。如果我有一个字符串,我可以使用“substring”方法轻松找到它。如果我将其存储为整数或字节,则无法执行此操作。@Blacklabel,您能再详细说明一下吗?显示一个示例,说明如何使用这些像素。也许有更好的方法。@Blacklabel,子字符串只能在非常有限的情况下工作,这些情况都不是很有趣。你应该考虑一个数据类型,如果你已经把它变平了,那么你就可以咬紧牙关,写出必要的循环。“达林。我基本上想找一个字符串,比如说“Hello”是在图像像素的最后一位找到的。我想提取图像的每个像素,并将最后一位单独存储在字符串中。我将把“Hello”转换成二进制,并存储到另一个字符串中。现在我将使用substring函数查看单词是否出现在图像中。:)。希望我解释得很清楚,在eclipse中有什么方法可以做到这一点吗?更改eclipse的堆大小只会在eclipse中运行代码时产生影响-这通常不是您部署东西的方式。话虽如此,您可能正在使用eclipse进行一些数据处理。在Eclipse“runconfiguration”中签出,如果您是从Eclipse中运行程序,您可以设置启动程序的JVM选项