title: Java byte[] to/from String conversion
body: <p>Why does this junit test fail?</p>
  
  <pre><code>import org.junit.Assert;
  import org.junit.Test;
  
  import java.io.UnsupportedEncodingException;
  
  public class TestBytes {
      @Test
      public void testBytes() throws UnsupportedEncodingException {
          byte[] bytes = new byte[]{0, -121, -80, 116, -62};
          String string = new String(bytes, "UTF-8");
          byte[] bytes2 = string.getBytes("UTF-8");
          System.out.print("bytes2: [");
          for (byte b : bytes2) System.out.print(b + ", ");
          System.out.print("]\n");
          Assert.assertArrayEquals(bytes, bytes2);
      }
  }
  </code></pre>
  
  <p>I would assume that the incoming byte array equaled the outcome, but somehow, probably due to the fact that UTF-8 characters take two bytes, the outcome array differs from the incoming array in both content and length.</p>
  
  <p>Please enlighten me.</p>