Klasa String jest klasą wbudowaną w Javę. Służy ona do reprezentacji tekstów i jest jedną z najpopularniejszych klas Java. Operacji, jakich można dokonać na ciągu znaków jest naprawdę dużo. My w poniższym rozdziale omówimy te najbardziej podstawowe.
Klasa String vs ""
Najprostszą reprezentacją ciągu znaków w Javie jest tekst wpisany między podwójne cudzysłowy "":
Jeśli chcemy umieścić wewnątrz ciągu znaków cytat, wówczas używamy cudzysłowu
pojedynczego:
Charakterystyczne w Javie jest to, że tworząc takie teksty jak powyżej (potocznie mówiąc stringi), automatycznie tworzy się obiekt typu
String.
Jest to jednak opcjonalny sposób tworzenia takiego obiektu i zarazem trochę niebezpieczny. W dalszym ciągu podstawowym sposobem utworzenia obiektu pozostaje użycie słowa kluczowego
new:
Dlaczego jednak używanie wersji z samymi cudzysłowami jest niebezpieczne? Okazuje się bowiem, że o ile używając słowa
new zawsze utworzymy nowy obiekt,
o tyle tworząc dwukrotnie tego samego stringa za pomocą cudzysłowów, za drugim razem otrzymamy najpewniej ten sam obiekt, na przykład:
Obiekt
itemNameExclusive będzie wskazywał na to samo miejsce w pamięci co obiekt
itemName, ponieważ zostanie pobrany z puli stringów przechowywanych w pamięci.
Tak więc jeśli zależy nam na 100% pewnym stworzeniu dwóch obiektów typu
String, wówczas zawsze tworzymy je za pomocą słowa kluczowego
new:
Metody klasy String
Omówmy sobie teraz najczęściej używane operacje na ciągach znaków. Ciąg taki w Javie jest w rzeczywistości obiektem, więc pracujemy na nim jak na każdym innym obiekcie,
czyli wywołujemy metodę poprzez postawienie kropki po nazwie obiektu, a następnie podajemy nazwę metody. Jeśli ktoś zapomniał to przypominamy, że o metodach pisaliśmy w rozdziale
Klasy i programowanie obiektowe.
-
Metoda length() służy do określenia długości ciągu. Dokładniej mówiąc zwraca nam ilość znaków w ciągu.
W tym wypadku wartość zmiennej len wynosi 11, bo tyle znaków ma słowo "Second Item" (spacja też jest liczona).
-
Metoda toUpperCase() zamienia wszystkie znaki w ciągu na duże litery.
W tym wypadku zmienna itemNameUpperCase zwróci ciąg "SECOND ITEM".
-
Metoda toLowerCase() zamienia wszystkie znaki w ciągu na małe litery.
W tym wypadku zmienna itemNameLowerCase zwróci ciąg "second item".
-
Metoda indexOf() zwraca pozycję pierwszego wystąpienia określonego tekstu w ciągu znaków (liczenie wykonywane jest łącznie z białymi znakami, np. spacją):
W tym wypadku zmienna index wynosi 2, bo na drugiej pozycji mieści się pierwsze (w tym przykładzie również jedyne) wystąpienie tekstu "ir".
Pamiętajcie o tym, że pozycje w Javie są liczone od zera. Czyli 0 jest pozycją pierwszego znaku, 1 drugiego itd.
Jeśli chcielibyśmy znaleźć pozycję tylko pojedycznego znaku, oczywiście też możemy użyć metody indexOf():
W tym wypadku zmienna index wynosi 1, bo litera "h" jest na pierwszej pozycji (licząc od zera).
-
Metoda lastIndexOf(String str) zwraca pozycję ostatniego wystąpienia określonego tekstu w ciągu znaków.
W tym wypadku zmienna index zwróci wartość 15. Pamiętajcie przy okazji, że "i" oraz "I" to dwa zupełnie różne znaki.
-
Metoda replace(char oldChar, char newChar) pozwala nam zastąpić jakiś znak innym znakiem.
W tym wypadku zmienna itemNameOfFire zwróci ciąg "Third Item of fire". Jak widać znak "v" został zastąpiony znakiem "r".
-
Ciągi znaków możemy ze sobą łączyć. W tym celu używamy operatora +, a sama
operacja łączenia nazywa się konkatenacją.
Zauważmy, że nadal pracujemy na obiektach. Między jednym słowem a drugim wstawiamy dodatkowo umieszczony w cudzysłowach znak spacji " ".
Aby połączyć dwa obiekty ciągów można też użyć metody concat() :
Tyle, że w tym wypadku nie mamy spacji, czyli jako ciąg znaków otrzymamy : "FourthItem"
Przykład w programie
Teraz zobaczmy jak będzie wyglądał przykład metody
replace(char oldChar, char newChar) po wpięciu jej do naszego programu
Hello JavAPPa:
[Film bez dźwięku] [720p]
Autor: Jarek Klimas
Data: 03 stycznia 2024
Labele: Backend, Podstawowy, Java
Czy informacje, które otrzymałeś, były pomocne?
Jeśli tak, zapraszam Cię do podarowania mi kawy.
Linki:
https://www.w3schools.com/java/java_strings.asp
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
Masz pytanie dotyczące prezentowanego materiału?
Coś jest dla Ciebie niejasne i Twoje wątpliwości przeszkadzają Ci w pełnym zrozumieniu treści?
Napisz do nas maila, a my chętnie znajdziemy odpowiednie rozwiązanie.
Najciekawsze pytania wraz z odpowiedziami będziemy publikować pod rozdziałem.
Nie czekaj. Naucz się programować jeszcze lepiej.