Luke
Luke

Reputation: 2063

Java multiline string formation

I'm by no means a java programmer, so this may seem pretty basic.

Which of these are 'better' when you want to keep your code lines short.

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

or

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

I guess my question is do both the += and + make a new String object? If they do then neither really are better, it would just be a matter of preference. The example I gave would be a good example of real world use. I don't want a comparison of doing a concatenation 3 times to 1000 times with either method.

Thanks

Upvotes: 4

Views: 2789

Answers (5)

bradylange
bradylange

Reputation: 384

Following Java's coding conventions:

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

Make sure the '+' operator begins the next line this improves readability. Using this style allows for readable and efficient code. https://www.oracle.com/technetwork/java/javase/documentation/codeconventions-136091.html#248

Hope this helps!

Happy coding,

Brady

Upvotes: 0

Roger Lindsjö
Roger Lindsjö

Reputation: 11543

The Java compiler is actually required to concatenate the second example at compile time. See 15.28. Constant Expressions and 3.10.5. String Literals.

Upvotes: 2

ChadNC
ChadNC

Reputation: 2503

StringBuilder sb = new StringBuilder();
sb.append("First part");
sb.append("Second part");
System.out.print(sb.toString());

Upvotes: 0

josh.trow
josh.trow

Reputation: 4901

Here's what I get when I compile then decompile this:

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

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

Becomes:

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);
}

So the second method is better.

Upvotes: 0

Tony Ennis
Tony Ennis

Reputation: 12289

I prefer the 2nd method. The reason is that the compiler will likely combine the result of the concatenation into a single string at compile time while the 1st method may be done at run-time (depending on the actual implemention.) It's a small thing unless you're doing something millions of times, however.

Upvotes: 3

Related Questions