这是将字符数组附加到字符串的最有效方法吗?

时间:2019-04-07 23:06:18

标签: java arrays string char

我想读取带有缓冲区的输入流,并将每个缓冲区附加到字符串,直到该流为空。

char[] buffer = new char[32];

while ((bytesRead = streamReader.read(buffer, 0, 32)) != -1)
   message += new String(buffer);

我找不到String的方法来直接附加一个字符数组,并为此选择了。有没有办法知道这是否会浪费周期将字符数组复制到新字符串,而只是立即丢弃它?

这可能是过早的优化,但它非常强烈地瞪着我。

我相信此构造函数会调用Arrays.copyOf()

2 个答案:

答案 0 :(得分:1)

否。

有更有效的方法。在循环中使用java.util.StringBuilder会更有效,因为它正在执行一系列操作。在循环中,+ =每次都会创建另一个String对象。例如,如果要对1_000_000个字符串执行String d = a + b + c + d...,那么您将使1_000_000个String对象浪费。字符串是不可变的。

相关链接:

String concatenation: concat() vs "+" operator

站外链接,但仍然相关 https://dzone.com/articles/string-concatenation-performacne-improvement-in-ja

答案 1 :(得分:-1)

我会做这样的事情:

90% opacity