当前位置: 首页 > 面试题库 >

编译器何时不隐式使用StringBuffer / StringBuilder?

暨正真
2023-03-14
问题内容

我听说编译器(或者是JVM?)将自动使用StringBuilder进行某些字符串连接。何时才是合适的时间明确声明一个?我不需要StringBuffer来保证线程安全

谢谢。


问题答案:

编译器将使用“ +”自动将它用于任何字符串连接。

如果要串联连接,通常会显式使用它。例如:

StringBuilder builder = new StringBuilder();
for (String name : names)
{
    builder.append(name);
    builder.append(", ");
}
if (builder.length() > 0)
{
    builder.setLength(builder.length() - 2);
}
System.out.println("Names: " + builder);

另一种情况是您想在多种方法上构建字符串,或者可能有条件地限制构建的某些位。基本上,如果您不是在单个语句(编译器可以帮助您)中构建字符串,则至少应考虑使用StringBuilder



 类似资料:
  • 我正在看Javadoc,这时我注意到了关于字符串连接的一点: Java语言为字符串连接运算符()和其他对象到字符串的转换提供了特殊支持。 从Java 8 JLS 15.8.1中,它是编译器的一个选择(我的重点): 实现可以选择在一个步骤中执行转换和级联,以避免创建然后丢弃中间String对象。为了提高重复字符串串联的性能,Java编译器可以使用StringBuffer类或类似的技术来减少通过表达式

  • 使用命令行编译器 注解 这一节并不适用于 solcjs solc 是 Solidity 源码库的构建目标之一,它是 Solidity 的命令行编译器。你可使用 solc --help 命令来查看它的所有选项的解释。该编译器可以生成各种输出,范围从简单的二进制文件、汇编文件到用于估计“gas”使用情况的抽象语法树(解析树)。如果你只想编译一个文件,你可以运行 solc --bin sourceFil

  • 工具链介绍 gxnpuc 用于把模型文件编译成能在 NPU 上运行的 npu 文件。 usage: gxnpuc [-h] [-V] [-L] [-v] [-m] [-c CMD [CMD ...]] [config_filename] NPU Compiler positional arguments: config_filename config file optiona

  • 也许有一个 选项,但我还没有找到它。 当直接运行并打印错误时,在消息的第一行之后,它会显示受影响的源代码行,并在下一行使用指向错误位置的插入符号。它看起来像这样: 注意那些直接指向我拼错类型名的行。< code > maven-compiler-plugin 显示如下: 请注意,它去掉了实际指向错误的行。(这是使用甲骨文JDK 7。) 好的,所以起初我认为这个较旧的问题会有答案,因为它也是关于没有

  • 当我在vscode的集成终端中运行java程序时,完整的java路径显示为一大框文本。有没有什么办法可以把它带走? /library/java/javavirtualmachines/jdk-13.0.1.jdk/contents/home/bin/java--enable-preview-dfile.encoding=utf-8-cp“/users/myusername/library/appl