Reputation: 2063
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
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
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
Reputation: 2503
StringBuilder sb = new StringBuilder();
sb.append("First part");
sb.append("Second part");
System.out.print(sb.toString());
Upvotes: 0
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
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