在Java中,String对象可能具有的最大大小是什么,引用length()方法调用?
我知道length()返回的大小String为a char [];
Java中的String和StringBuffer有什么区别?
String的最大大小是多少?
我知道这可能是一个非常愚蠢的问题,但我找不到可靠的资源,我可以获得这些信息.
在Android应用程序中,我试图通过继续向其附加更多数据来保存String中的数据.最后,当用户关闭应用程序或点击"保存按钮"时,我将其记录到数据.csv文件中.
我想知道java中有多少数据可以容纳一个简单的String?,因此,如果String数据类型耗尽分配的内存,应用程序不会崩溃.BTW我试图强调测试我的应用程序,无论我在一个字符串中存储多少数据,它似乎运行正常.
平硐
我有一个Java程序,它使用a StringBuilder来从输入流构建一个字符串,并最终在字符串太长时导致内存不足错误.我尝试将其分解为更短的字符串并将其存储在一个中ArrayList,这避免了OOM,即使我试图存储相同数量的数据.为什么是这样?
我怀疑有一个非常长的字符串,计算机必须在内存中找到一个连续的位置,但是ArrayList它可以在内存中使用多个较小的位置.我知道Java中的内存可能很棘手,所以这个问题可能没有直截了当的答案,但希望有人可以让我走上正轨.谢谢!
显然,javac中的初始化字符串的大小是有限的.任何人都可以帮我确定最高限度是什么吗?
谢谢
编辑:
我们正在构建一个初始化字符串,它看起来像"{1,2,3,4,5,6,7,8 ......}",但理想情况下有10,000个数字.当我们为1000执行此操作时,10,000会抛出一个错误,说代码对于try语句来说太大了.
为了产生这个,我们使用了一个stringbuilder并在一个附加值的数组上循环.显然这是javac的限制.我们被告知,如果我们以小块的形式传递它,我们可以在我们调用的方法中重建数组.然而,这是不可能的,因为我们无法控制我们正在调用的用户方法.
我想发布代码,但不能,因为这是一个大学的项目.我不是在寻找代码解决方案,只是帮助理解这里的实际问题.
它的for循环是罪犯
Object o = new Object()
{
public String toString()
{
StringBuilder s = new StringBuilder();
int length = MainInterfaceProcessor.this.valuesFromData.length;
Object[] arrayToProcess = MainInterfaceProcessor.this.valuesFromData;
if(length == 0)
{
//throw exception to do
}
else if(length == 1)
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+"}");
}
else
{
s.append("{" + Integer.toString((Integer)arrayToProcess[0])+","); //opening statement
for(int i = 1; i < length; i++)
{
if(i == (length - 1))
{
//last element in the array so dont add comma …Run Code Online (Sandbox Code Playgroud) 我想在一个非常大的字符串的特定位置找到该字符.但是我无法使用charAt()方法,因为范围超过int的范围.这是否有调整?
我创建了简单的Base64Images辅助类,其中包含此主体:
companion object{
val ABSTRACT_COLORS = "[image encoded in base64]"
}
Run Code Online (Sandbox Code Playgroud)
ABSTRACT_COLORS实际上是一个有 570438 个字符的字符串。
在编译过程中我得到:
org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Failed to generate property ABSTRACT_COLORS
...
...
The root cause was thrown at: ByteVector.java:213 at org.jetbrains.kotlin.codegen.MemberCodegen.genFunctionOrProperty(MemberCodegen.java:205)
Caused by: java.lang.IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)
我认为我可以在字符串中存储2147483647 (2 31 - 1) 个字符。
这是为什么?
我在下面发布了这张图片。
您可以使用此工具生成base64。
提示:编辑此类或编译项目会冻结 Android Studio。
我会使用一些轻量级编辑器来编辑并使用终端来编译它。
现在我用字符串参数创建了一个 jenkins 作业,这个参数来自上游作业。我只想知道字符串参数的长度是否有任何限制,因为此信息是从上游作业中获取的,并且云是一个很长的字符串
嗨我正在编写代码来打印由逗号分隔的ArrayList中的所有元素,下面是我编写的方法.有用.但我想知道它是否可以简化?是否有更优雅的方式来打印由一些分隔符分隔的ArrayList中的所有元素?(例如,打印字符串ArrayList的方法得到"Tom,Sherlock,Jack")
感谢大家!
public String printMyArrayList() {
if(mylist.size() == 0)return "";
else if(mylist.size() == 1)return mylist.get(0).toString();
else {
String returnStr = "";
for (int i = 0; i < mylist.size() ; i++) {
if(i == 0)returnStr = mylist.get(i).toString();
else {
returnStr = returnStr + ", " + mylist.get(i).toString();
}
}
return returnStr;
}
}
Run Code Online (Sandbox Code Playgroud) 我有configAllowedUsers.properties。
它具有单入条目,如下所示:
users = abc, pew, rt, me1, me3, ku3,........
Run Code Online (Sandbox Code Playgroud)
我对其中存储的值的长度存有疑问。我将使用阅读它 java.util.Properties。数千个用户名将存储在其中,而我无法将其存储在数据库中。
我试图解决Java中的CodeChef问题,并发现我无法创建长度> 100万字符的字符串(至少使用我的编译器).我在一个字符串中粘贴了Pi的前一百万个十进制数字(例如String PI ="3.1415926535 ... 151"),它无法编译.当我取出Pi并将其替换为像"dog"这样的较短字符串时,代码会编译.任何人都可以确认这是否确实是Java的限制?
谢谢.
从服务器返回到我的Android应用程序的POST消息响应是一篇文章.遗憾的是,String数据类型无法存储整篇论文.
你能建议我可以这样使用的数据类型:
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
String result = EntityUtils.toString(resEntity);
Run Code Online (Sandbox Code Playgroud)
当我System.out.println(result)没有向我展示整篇文章.
我希望能够将任何字符串编码为有效的java类名,然后将该类名解码回提供的字符串.我希望能够做到这一点是无损的方式,即,没有两个字符串可以编码为相同的java类名.
这可能吗?