A sztringet gyakran egy sztring konstansból, egy karaktersorozatból készítjük. A StringsDemo program is ezt a módszert használja, hogy létrehozzon egy sztringet, amire a palindrome változóval hivatkozik:

String palindrome = "Dot saw I was Tod";

String-eket úgy is előállíthatunk, min bármilyen más Java objektumot: a new kulcsszó és a konstruktor segítségével. A String osztály több konstruktort szolgáltat, amelyekkel beállíthatjuk a String kezdőértékét, különböző forrásokat használva, mint például karakter tömböt, byte tömböt, StringBuffert, vagy StringBuildert.

A következő lista a String osztály konstruktorait tartalmazza:

String() Üres String-et hoz létre.
String(byte[]) String(byte[], int, int) String(byte[], int, int, String) String(byte[], String) Bájttömb tartalma alapján jön létre. Lehetőség van egy egész kezdőindex és hossz megadására részintervallum figyelembevételéhez, illetve meg lehet adni karakterkódolást is.
String(char[]) String(char[], int, int) Karaktertömb egésze vagy csak egy része alapján jön létre.
String(String) Másik String másolatát hozza létre.
String(StringBuffer) StringBuffer tartalma alapján jön létre.
String(StringBuilder) StringBuilder tartalma alapján jön létre.

Egy példa arra, amikor karaktertömbből készítünk sztringet:

char[] helloArray = { 'h', 'e', 'l', 'l', 'o' };
String helloString = new String(helloArray);
System.out.println(helloString);

A kódrészlet utolsó sora ezt írja ki:

hello

Ha StringBuffer-t, vagy StringBuilder-t hozunk létre, mindig használnunk kell a new operátort. Mivel a két osztálynak azonosak a konstruktorai, a következő lista csak a StringBuffer osztály konstruktorait tartalmazza:

  • StringBuffer()
  • StringBuffer(CharSequence)
  • StringBuffer(int)
  • StringBuffer(String)

A StringsDemo programban egy dest nevű StringBuildert hozunk létre, azt a konstruktort használva, amely a puffer kapacitását állítja be:

String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
StringBuilder dest = new StringBuilder(len);

A kód létrehoz egy StringBuildert, melynek kezdeti kapacitása megegyezik a palindrome nevű String hosszával. Ez csak a memóriafoglalást biztosítja a dest számára, mert ennek mérete pontosan elegendő lesz a bemásolandó karakterek számára. A StringBuffer vagy StringBuilder kapacitásának inicializálásával egy elfogadható méretre minimalizálhatjuk a memóriafoglalások számát, amivel sokkal hatékonyabbá tehetjük programunkat, mert a memóriafoglalás elég költséges művelet.

Megjegyzés: Ha egy StringBuilder vagy StringBuffer objektum méret növelése során a szabad kapacitása elfogy, akkor egy új, kétszer akkora memóriaterület kerül lefoglalásra, ahová a régi tartalom átmásolásra kerül. Ebből is látszik, hogy ha tudjuk, érdemes pontosan (vagy legalább becsülten) megadni a szükséges kapacitást.