1. Klasa urządzeniaString
Dzisiaj porozmawiamy o klasie String
. Klasa String jest najpopularniejszą klasą w Javie po typie int. Jest używany absolutnie wszędzie. Ma kilka przydatnych metod, które lepiej znać niż nie wiedzieć.
Klasa String
jest jedyną klasą, inną niż typy pierwotne, której literały mogą być używane w switch
; kompilator w specjalny sposób obsługuje dodawanie napisów i obiektów; obiekty String
są przechowywane w pamięci w specjalny sposób. Ogólnie rzecz biorąc, klasa String
jest bardzo specyficzną klasą.
Klasa String
posiada również kilka klas satelickich, których celem jest dalsze uproszczenie pracy z ciągami znaków w Javie. Kiedy nauczysz się tego wszystkiego, będzie ci naprawdę dużo łatwiej robić wiele rzeczy. Cóż, zaczniemy od samego serca tego ekosystemu – od urządzenia z klasą String
.
Tablica znaków
A klasa String
jest w rzeczywistości bardzo prosta: wewnątrz niej znajduje się tablica znaków (char), która przechowuje wszystkie znaki łańcucha. Na przykład tak jest przechowywane słowo „Cześć”:
W rzeczywistości wszystko jest trochę inne. Ponieważ klasa String
jest bardzo ważna, wykorzystuje wiele optymalizacji, a dane są przechowywane wewnętrznie nie jako tablica znaków, ale po prostu jako tablica bajtów.
2. Metody klasoweString
Klasa ma String
wiele metod: ma tylko 18 konstruktorów! Dlatego poniżej przedstawiamy tylko najważniejsze z nich:
Metody | Opis |
---|---|
|
Zwraca liczbę znaków w ciągu |
|
Sprawdza, czy string == pusty string |
|
Sprawdza, czy łańcuch zawiera tylko białe znaki: spację, tabulator, enter itp. |
|
Zwraca znak na pozycji indeksu w ciągu. |
|
Zwraca tablicę znaków (kopiowanie), z których składa się łańcuch |
|
Konwertuje ciąg na zestaw bajtów i zwraca tablicę bajtów. |
|
Dzieli ciąg na wiele podciągów. |
|
Łączy ze sobą wiele podciągów |
|
Umieszcza ciąg znaków w puli StringPool . |
Więcej o konstruktorach dowiesz się z artykułu Po co mi konstruktor?
Napiszmy program, który konwertuje ścieżkę pliku ze stylu Unix na styl Windows. Unix używa znaku jako separatora katalogów /
, Windows używa znaku \
.
Rozwiązanie 1 - użycie tablicy znaków
Kod | Notatki |
---|---|
|
Tworzenie obiektu Scanner Odczytywanie ciągu znaków z konsoli Konwersja ciągu znaków na tablicę znaków Przechodzenie przez znaki w pętli Jeśli znakiem jest / , zamień go na \ . Nie zapomnij o ekranowaniu. Utwórz nowy ciąg na podstawie tablicy znaków. Wyświetlamy napis na ekranie. |
Rozwiązanie 2 - użyj metod split()
i join()
:
Kod | Notatki |
---|---|
|
Tworzenie obiektu Scanner Odczytywanie ciągu znaków z konsoli Konwersja ciągu znaków na tablicę ciągów znaków . Symbol jest używany jako separator / (dodatkowe dwa ukośniki są konsekwencją podwójnej ucieczki). Łączymy wszystkie ciągi znaków z tablicy łańcuchów , używając znaku jako separatora \ (widzimy, że jest to znak ucieczki). Wyświetlamy napis na ekranie. |
Rozwiązanie 3 - przy użyciu metody replace(char oldChar, char newChar)
:
Kod | Notatki |
---|---|
|
Tworzenie obiektu Scanner Odczytywanie ciągu znaków z konsoli Po prostu zamień jeden znak na drugi (drugi znak ucieczki) Wyświetl ciąg znaków na ekranie. |