在这个答案中,它说(暗示)无论如何都将String连接优化为StringBuilder操作,所以当我编写代码时,是否有任何理由在源代码中编写StringBuilder代码?请注意,我的用例与OP的问题不同,因为我连接/追加数十万行.
为了让自己更清楚:我很清楚每个的差异,只是我不知道是否值得实际编写StringBuilder代码,因为它的可读性较差,而且当它的表兄弟,String类被自动转换为无论如何编译过程.
有没有办法追加两个字符串构建器?如果是这样 - 它是否比将字符串附加到StringBuilder更好?
StringBuilder工作怎么样?
它内部有什么作用?它使用不安全的代码吗?为什么它如此之快(与+运营商相比)?
如何以编程方式证明StringBuilder不是线程安全的?
我尝试过这个,但它不起作用:
public class Threadsafe {
public static void main(String[] args) throws InterruptedException {
long startdate = System.currentTimeMillis();
MyThread1 mt1 = new MyThread1();
Thread t = new Thread(mt1);
MyThread2 mt2 = new MyThread2();
Thread t0 = new Thread(mt2);
t.start();
t0.start();
t.join();
t0.join();
long enddate = System.currentTimeMillis();
long time = enddate - startdate;
System.out.println(time);
}
String str = "aamir";
StringBuilder sb = new StringBuilder(str);
public void updateme() {
sb.deleteCharAt(2);
System.out.println(sb.toString());
}
public void displayme() {
sb.append("b");
System.out.println(sb.toString());
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个很大的CLOB(超过32kB)我想用StringBuilder读取一个String.我如何以最有效的方式做到这一点?我不能使用StringBuilder的"int length"构造函数,因为我的CLOB的长度比"int"长,并且需要"long"值.
我对Java I/O类并不那么舒服,并希望获得一些指导.
编辑 - 我已经尝试使用clobToString()的代码:
private String clobToString(Clob data) {
StringBuilder sb = new StringBuilder();
try {
Reader reader = data.getCharacterStream();
BufferedReader br = new BufferedReader(reader);
String line;
while(null != (line = br.readLine())) {
sb.append(line);
}
br.close();
} catch (SQLException e) {
// handle this exception
} catch (IOException e) {
// handle this exception
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud) 使用标记生成器和字符串生成器在htmlhelper类中创建表或使用HtmlTable有什么区别?
他们不是生成同样的事情吗?
我想知道StringBuilder,我有一个问题,我希望社区能够解释.
让我们忘记代码可读性,哪些更快,为什么?
StringBuilder.Append:StringBuilder sb = new StringBuilder();
sb.Append(string1);
sb.Append("----");
sb.Append(string2);
Run Code Online (Sandbox Code Playgroud)
StringBuilder.AppendFormat:StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0}----{1}",string1,string2);
Run Code Online (Sandbox Code Playgroud) 我想知道,因为编译器内部使用StringBuilder在执行字符串连接时附加2个字符串,那么问题是什么?如果字符串连接已经为你完成了工作,我为什么要使用StringBuilder呢?还有其他具体原因吗?
将StringBuilder转储到文本文件的最有效/最优雅的方法是什么?
你可以做:
outputStream.write(stringBuilder.toString().getBytes());
Run Code Online (Sandbox Code Playgroud)
但这对于一个很长的文件有效吗?
有没有更好的办法?
stringbuilder ×10
java ×5
c# ×4
string ×3
.net ×1
append ×1
asp.net-mvc ×1
clob ×1
file ×1
php ×1
tagbuilder ×1