String オブジェクトは、リテラルを使用して作成できます。

String s = "a string";

または、コンストラクターの1つを呼び出すことによって:

String s = new String("a string");

String リテラルを使用すると、String定数プールから既存のオブジェクトを再利用しようとします。

一方、コンストラクターを使用して文字列をインスタンス化すると、新しいオブジェクトが作成されます

このコンストラクターは多くのタイプの引数を受け入れ、それらを使用して新しいStringオブジェクトを作成します。

利用可能な署名

public String()
public String(byte[] bytes)
public String(byte[] bytes, Charset charset)
public String(byte[] bytes, int offset, int length)
public String(byte[] bytes, int offset, int length, Charset charset)
public String(byte[] bytes, int offset, int length, String charsetName)
public String(byte[] bytes, String charsetName)
public String(char[] value)
public String(char[] value, int offset, int count)
public String(int[] codePoints, int offset, int count)
public String(String original)
public String(StringBuffer buffer)
public String(StringBuilder builder)

@Test
public void whenCreateStringUsingByteArray_thenCorrect() {
    byte[] array = new byte[] { 97, 98, 99, 100 };
    String s = new String(array);
    
    assertEquals("abcd", s);
}