Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java多行字符串形成_Java_String Concatenation - Fatal编程技术网

Java多行字符串形成

Java多行字符串形成,java,string-concatenation,Java,String Concatenation,我绝不是一个java程序员,所以这看起来很基本 当您希望代码行保持简短时,以下哪项“更好” String str = "First part of a string."; str += " Second part of string."; 或 我想我的问题是+=和+是否都生成一个新的字符串对象?如果他们真的这样做了,那么两者都不是更好的,这只是偏好的问题。我举的例子将是一个很好的现实世界使用的例子。我不想用这两种方法进行3次连接到1000次连接的比较 谢谢我更喜欢第二种方法。原因是编译器可能会

我绝不是一个java程序员,所以这看起来很基本

当您希望代码行保持简短时,以下哪项“更好”

String str = "First part of a string.";
str += " Second part of string.";

我想我的问题是+=和+是否都生成一个新的字符串对象?如果他们真的这样做了,那么两者都不是更好的,这只是偏好的问题。我举的例子将是一个很好的现实世界使用的例子。我不想用这两种方法进行3次连接到1000次连接的比较


谢谢

我更喜欢第二种方法。原因是编译器可能会在编译时将连接的结果合并成一个字符串,而第一个方法可能在运行时完成(取决于实际实现)。这是一件小事,除非您执行了数百万次操作。

以下是我编译后反编译的结果:

public static void main(String[] args) {
    String str = "First";
    str += " Second";
    System.out.println(str);

    String str2 = "First" + " Second";
    System.out.println(str2);
}
变成:

public static void main(String args[]) {
    String s = "First";
    s = (new StringBuilder()).append(s).append(" Second").toString();
    System.out.println(s);
    String s1 = "First Second";
    System.out.println(s1);
}

因此第二种方法更好。

实际上需要Java编译器在编译时连接第二个示例。请参见和。

以下Java的编码约定:

String str = "First part of string. "
             + "Second part of string.";
确保“+”运算符从下一行开始,这样可以提高可读性。 使用这种样式可以获得可读且高效的代码。

希望这有帮助

快乐编码


Brady

我不能为实际的实现说话,但是在我看来,第二个将使连接的优化变得很容易,并且只考虑字符串的两个部分是单文字的,非常棒的家伙,谢谢!我是一名ruby开发人员,用于一般字符串构建(当您需要连接大量字符串时),StringBuilder是一个很好的工具,可以帮助避免原始连接的开销。它肯定会在编译时合并连接的结果。这是必需的行为。编译器需要在编译时连接它。与JVM无关。
StringBuilder sb = new StringBuilder();
sb.append("First part");
sb.append("Second part");
System.out.print(sb.toString());
String str = "First part of string. "
             + "Second part of string.";