1. Poznajmy bliżej typ String
Typ String — jeden z najczęściej używanych typów w Javie. Być może wręcz najczęściej używany. To świetny typ, bo w takich zmiennych można przechowywać tekst. A poza tym, w odróżnieniu od typów int i double, obiekty typu String mają mnóstwo różnych metod, dzięki którym można robić ciekawe rzeczy.
Ponadto wszystkie obiekty w Javie (dosłownie wszystkie) mogą być przekształcone do typu String. A mówiąc precyzyjniej, każdy obiekt w Javie zwraca swoje tekstowe (łańcuchowe) przedstawienie. Będziemy do tego typu wracać jeszcze nie raz (jest bardzo użyteczny i ciekawy), ale dziś poznamy jego podstawy.
Tworzenie zmiennych typu String
Typ String został stworzony do przechowywania łańcuchów (tekstu). Aby w kodzie utworzyć zmienną, która będzie zdolna przechowywać tekst, należy użyć polecenia:
String name;
Gdzie name — to nazwa zmiennej.
Przykłady:
| Polecenie | Opis |
|---|---|
|
Tworzona jest zmienna łańcuchowa name |
|
Tworzona jest zmienna łańcuchowa message |
|
Tworzona jest zmienna łańcuchowa text |
Podobnie jak w przypadku typów int i double, można użyć skróconej składni do utworzenia kilku zmiennych typu String:
String name1, name2, name3;
2. Przypisywanie wartości zmiennym typu String
Aby przypisać do zmiennej typu String wartość, należy użyć polecenia:
name = "wartość";
I tu pojawia się pierwsza różnica względem już poznanych typów. Wszystkie wartości typu String są łańcuchami tekstu i muszą być ujęte w podwójne cudzysłowy.
Przykłady:
| Polecenie | Uwaga |
|---|---|
|
Zmienna name zawiera napis Ania |
|
Zmienna city zawiera napis New York |
|
Zmienna message zawiera napis Hello! |
3. Inicjalizacja zmiennych typu String
Tak jak w przypadku typów int i double, zmienne typu String można zainicjalizować od razu przy tworzeniu. Właściwie można tak robić ze wszystkimi typami w Javie. Nie będziemy już do tego wracać.
String name1 = "wartość1", name2 = "wartość2", name3 = "wartość3";
String name = "Ania", city = "New York", message = "Hello!";
Zmieniać można tylko zmienne z przypisaną wartością
Kompilator Javy zgłosi błąd, jeśli zadeklarujesz zmienną, nie przypiszesz jej żadnej wartości i spróbujesz jej użyć.
Taki kod nie zadziała:
String name;
System.out.println(name); // Zmienna name nie jest zainicjalizowana. Program się nie skompiluje.
int a;
a++; // Zmienna a nie jest zainicjalizowana. Program się nie skompiluje.
double x;
double y = x; // Zmienna x nie jest zainicjalizowana. Program się nie skompiluje.
4. Konkatenacja — sklejanie łańcuchów
Jest pewna bardzo ciekawa i prosta rzecz, którą można robić z łańcuchami w Javie — można je skleić. Taka operacja nazywa się konkatenacją. A żeby łatwiej zapamiętać — Kon-ko-te-nacja 😆. Często mówi się też „sklejanie łańcuchów” albo po prostu „dodawanie łańcuchów”.
Aby skleić dwa łańcuchy, należy użyć znaku +. To bardzo proste:
"napis1" + "napis2"
Przykłady:
| Polecenie | Uwaga |
|---|---|
|
name zawiera łańcuch AniaAnia |
|
city zawiera łańcuch New YorkAnia |
|
message zawiera łańcuch Hello! Ania |
Oczywiście jednocześnie można łączyć wiele łańcuchów, a także łączyć łańcuchy i zmienne.
String name = "Ania"; // name zawiera łańcuch Ania
String city = "New York"; // city zawiera łańcuch New York
String message = "Hello!" + city + name + city; // message zawiera łańcuch Hello!New YorkAniaNew York
5. Puste łańcuchy
W ostatnim przykładzie widać, że tekst w zmiennej message słabo się czyta, bo brakuje w nim spacji. Aby wstawić jedną lub kilka spacji, wystarczy po prostu zapisać je w kodzie i ująć w podwójne cudzysłowy. To prostsze, niż się wydaje:
" "
Przy okazji, jeśli między cudzysłowami w ogóle nic nie zostawisz (zapiszesz dwa podwójne cudzysłowy bez znaku między nimi), otrzymasz tzw. „pusty łańcuch”:
""
Z jednej strony on jakby istnieje, a z drugiej — przy jego wypisaniu na ekran nic się nie pojawia. I przy sklejaniu z innymi łańcuchami nic się nie dzieje. Taki odpowiednik zera, ale dla łańcuchów.
6. Escapowanie znaków specjalnych w łańcuchach
Wiesz już, że łańcuchy są ujęte w podwójne cudzysłowy. Ale co zrobić, jeśli trzeba wstawić do łańcucha cudzysłowy? Jeśli wpiszemy cudzysłów wewnątrz łańcucha, czy kompilator nie uzna go za zakończenie łańcucha?
Dokładnie tak. Uznaje. Dlatego cudzysłowy wewnątrz tekstu zastępuje się parą znaków \". I kod będzie wyglądał tak:
String quote = "Powiedział: \"Dzień dobry!\"";
System.out.println(quote); // Powiedział: "Dzień dobry!"
W rzeczywistości jest jeszcze odrobinę sprytniej. Znak \ jest traktowany jako specjalny (sterujący) w łańcuchach. Za jego pomocą można zapisywać różne „niedrukowalne znaki”, np. nową linię, tabulator itp. A żeby zapisać sam znak \, trzeba go wpisać dwa razy.
Oto 4 najczęstsze kombinacje:
| Zapis | Znaczenie |
|---|---|
| \n | Nowa linia (newline) |
| \t | Tabulator (wcięcie) |
| \\ | Dosłownie \ |
| \" | Cudzysłów wewnątrz łańcucha |
Przykład:
String multiline = "Linia 1\nLinia 2";
System.out.println(multiline);
Wypisze:
Linia 1
Linia 2
7. Metody typu String
Typ String ma własne funkcje (zwane metodami). Jest ich bardzo dużo i ułatwiają życie programistom. Dziś poznasz kilka (najprostszych) z nich. Przykłady:
| Funkcja | Opis | Przykładowy wynik |
|---|---|---|
|
Długość łańcucha | |
|
Na wielkie litery | |
|
Na małe litery | |
|
Usunięcie spacji na krańcach | |
Przykłady użycia metod dla łańcuchów
Wszystkie te metody wywołuje się tak: zmienna.metoda(...).
Określić długość łańcucha:
String name = "Andrzej";
int length = name.length();
System.out.println(length); // 6, ponieważ 6 liter
Zamiana na wielkie lub małe litery:
String original = "Cześć";
System.out.println(original.toUpperCase()); // CZEŚĆ
System.out.println(original.toLowerCase()); // cześć
Usunięcie spacji na krańcach (bardzo przydatne przy wprowadzaniu z klawiatury):
String messy = " hello ";
System.out.println(messy.trim()); // "hello"
Każda z tych metod zwraca nowy łańcuch, stary łańcuch przy tym nie ulega zmianie.
GO TO FULL VERSION