title: Is concatenating with an empty string to do a string conversion really that bad?
body: <p>Let's say I have two <code>char</code> variables, and later on I want to concatenate them into a string. This is how I would do it:</p>
  
  <pre><code>char c1, c2;
  // ...
  
  String s = "" + c1 + c2;
  </code></pre>
  
  <p>I've seen people who say that the <code>"" +</code> "trick" is "ugly", etc, and that you should use <code>String.valueOf</code> or <code>Character.toString</code> instead. I prefer this construct because:</p>
  
  <ul>
  <li>I prefer using language feature instead of API call if possible
  
  <ul>
  <li>In general, isn't the language usually more stable than the API?</li>
  <li>If language feature only hides API call, then even stronger reason to prefer it!
  
  <ul>
  <li>More abstract! Hiding is good!</li>
  </ul></li>
  </ul></li>
  <li>I like that the <code>c1</code> and <code>c2</code> are visually on the same level
  
  <ul>
  <li><code>String.valueOf(c1) + c2</code> suggests something is special about <code>c1</code></li>
  </ul></li>
  <li>It's shorter.</li>
  </ul>
  
  <p>Is there really a good argument why <code>String.valueOf</code> or <code>Character.toString</code> is preferrable to <code>"" +</code>?</p>
  
  <hr>
  
  <p>Trivia: in <a href="http://www.google.com/codesearch/p?hl=en#av_p04Hv9fs/src/share/classes/java/lang/AssertionError.java" rel="noreferrer"><code>java.lang.AssertionError</code></a>, the following line appears 7 times, each with a different type:</p>
  
  <pre><code>    this("" + detailMessage);
  </code></pre>