Kurs Java

Klasa String

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 "":
String itemName = "First Item";
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'";
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:
String itemName = new String("First Item");
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:
String itemName = "First Item";
String itemNameExclusive = "First Item";
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:
String itemName = new String("First Item");
String itemNameExclusive = new String("First Item");

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.
    String itemName = "Second item";
    int len = itemName.length();
    
    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.
    String itemName = "Second Item";
    String itemNameUpperCase = itemName.toUpperCase();
    
    W tym wypadku zmienna itemNameUpperCase zwróci ciąg "SECOND ITEM".
  • Metoda toLowerCase() zamienia wszystkie znaki w ciągu na małe litery.
    String itemName = "Second Item";
    String itemNameLowerCase = itemName.toLowerCase();
    
    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ą):
    String itemName = "Third item";
    int index  = itemName.indexOf("ir");
    
    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():
    String itemName = "Third item";
    int index  = itemName.indexOf("h");
    
    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.
    String itemName = "Third Item of five";
    int index  = itemName.lastIndexOf("i");
    
    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.
    String itemName = "Third Item of five";
    String itemNameOfFire = itemName.replace('v','r');
    
    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ą.
    String itemNamePrefix = "Fourth";
    String itemNameBase = "Item";
    String itemFullName = itemNamePrefix + " " + itemNameBase;
    
    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() :
    String itemNamePrefix = "Fourth";
    String itemNameBase = "Item";
    
    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:
public class Start {

   public static void main(String[] args) {
       System.out.println("Hello JavAPPa");
       
       String itemDescription = "All item has multiple attributes";
       String itemDescriptionModified = itemDescription.replace("i", "x");
    	
       System.out.println(itemDescriptionModified);
   }
}
[Film bez dźwięku] [720p]
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 tego rozdziału? Zadaj je nam!
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.
kursjava@javappa.com

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy:
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .