假设我有以下代码:
ng-click
我的问题是:StringBuilder sb = new StringBuilder("521,214");
String[] result = sb.toString().split(",");
生成2个字符串还是3个字符串?
我知道结果String数组将有2个字符串 - 但toString().split(",")
调用也会生成一个字符串 - 这不会被返回?
基本上,我试图限制为性能目的而创建的字符串数量,并想知道toString()
调用是否将创建的字符串总数增加到3?
答案 0 :(得分:6)
这两行总共会创建五个String
对象:
"521,214"
对象传递给StringBuilder
的构造函数。该对象位于实习字符串池中,","
传递给split
的字符串对象。该对象也在实习字符串池中,"521,214"
生成的等效toString
对象。 toString
的每次调用都会生成一个新的String
对象。没有优化来查看之前是否请求过相同的字符串对象。String
方法生成的"521"
和"214"
的两个split
个对象不言而喻,将创建一个String[]
数组对象来保存从"521"
方法返回的"214"
和split
个对象。
答案 1 :(得分:1)
做toString()。split(“,”)生成2个字符串或3个字符串
既不是2也不是3,split返回一个数组对象,该数组是由字符串组成的另一个故事......
如果您的问题是该数组中有多少个字符串,那么答案是:它取决于您要分割的原始字符串中有多少个tockens(“,”)......
答案 2 :(得分:1)
它将创建一个包含2个字符串的String数组。
您可以随时打印出数组来测试:
StringBuilder sb = new StringBuilder("521,214");
String[] result = sb.toString().split(",");
for(String s : result)
System.out.println(s);
方法.split()
将删除您要拆分的字符串。