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

问题描述 投票:0回答:2

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

char[] buffer = new char[32];

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

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

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

我相信这个构造函数调用Arrays.copyOf()

java arrays string char
2个回答
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相关

© www.soinside.com 2019 - 2024. All rights reserved.