Я думаю, что предыдущие сообщения хорошо освещали то, что происходит со строкой в терминах 16-битного-8-битного представления.Вторая половина вашего вопроса, касающаяся роста байтового массива, обычно выполняется с помощью System.arraycopy (src, srcPos, dest, destPos, length).
String str="Rockets are fun.";
byte[] ba=str.getBytes();
byte[] bigger=new byte[23];
System.arraycopy(ba, 0, bigger, 0, ba.length);
byte[] toFly=" to fly.".getBytes();
System.arraycopy(toFly, 0, bigger, 15, toFly.length);
System.out.println(new String(bigger, "UTF-8"));