Klasa String jest klasą wbudowaną w Javę. Służy ona do reprezentacji tekstów.
String jest także obiektem i jest on immutable czyli niezmienny. Czyli raz utworzonego String nie da się zmienić. Wszystkie więc operacje które mogą „zmienić” Stringa tak naprawdę zwracają nowy zmieniony obiekt String. Ma to duże znaczenie w przypadku tworzenia dużej ilości napisów powstałych na wskutek łączenia napisów. Wtedy zamiast operatora „+” lepiej jest używać jednej z klas StringBuilder lub StringBuffer.
Dodatkowo przy konkatenacji należy uważać w którym miejscu są zapisywane liczby które chcemy dodać w metodzie System.out.println. ponieważ można otrzymać rożne rezultaty. Trzeba pamiętać że w konkatenacji dodawanie liczb następuje od lewej do prawej ( operator „+” jest lewostronnie łączny ):
System.out.println(1 + 2 + "test"); // 3test
;
Natomiast jeśli te liczby zostaną dodane do innego tekstu to zostaną one tylko wypisane: System.out.println(„test” + 1 + 2); // test12
W momencie gdy używamy konkatenacji kompilator Java w trakcie kompilacji wykrywa to i zastępuje ją wywołaniem odpowiednich metod na instancji klasy StringBuilder
. Niestety taka automatyczne optymalizacja nie działa w przypadku kiedy chcemy zastosować konkatenacje w pętli.
Instancje klasy String reprezentują łańcuchy znaków. Zaś znaki te są przechowywane w tablicy znaków która ma typ char[]
.
Stringa można utworzyć na dwa sposoby. Pierwszy: String text = „Ala ma kota”. Jeśli chcemy umieścić wewnątrz ciągu znaków cytat, wówczas używamy cudzysłowu pojedynczego: String itemName = „First Item – ‘The best one’ „. Tworząc tekst w ten sposób automatycznie tworzy się obiekt typu String.
Drugi sposób zapisu następuje za pomocą słówka new np.: String text = new String („Kot jest rasy Ragdoll”).
Natomiast operator podwójny „==” sprawdza czy obiekty zajmują to samo miejsce w pamięci komputera. Jeżeli więc utworzymy String text1 =”Ala” i String text 2 = „Ala” to dla Javy będzie to jeden i ten sam obiekt. Dzieje się tak dlatego że Java korzysta z puli stringów (Java dokonuje optymalizacji) i aby nie marnować miejsca te dwa napisy trafiają w jedno miejsce w pamięci którym jest „Sterta(Heap)„
Natomiast każdy nowy String utworzony za pomocą słowa „new” zajmuje inne miejsce w pamięci oznacza to więc że jest innym obiektem nawet jeśli widzimy dwa takie same napisy np: String text1 = new String „Ala” i String text2 =new String „Ala”. Wówczas takie obiekty należy porównywać metodą equals która sprawdza strukturę i informacje zawarte w Stringu. Oznacza to że sprawdza każdy znak obu tekstów i zwraca wartość true jeśli oba teksty są takie same literka po literce.