CodeGym /Kursy /JAVA 25 SELF /Łańcuchy i tekst: typ String, praca z łańcuchami

Łańcuchy i tekst: typ String, praca z łańcuchami

JAVA 25 SELF
Poziom 2, Lekcja 2
Dostępny

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;
Tworzenie zmiennej typu String

Gdzie name — to nazwa zmiennej.

Przykłady:

Polecenie Opis
String name;
Tworzona jest zmienna łańcuchowa name
String message;
Tworzona jest zmienna łańcuchowa message
String text;
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;
Tworzenie zmiennych typu String

2. Przypisywanie wartości zmiennym typu String

Aby przypisać do zmiennej typu String wartość, należy użyć polecenia:

name = "wartość";
Przypisanie wartości do zmiennej typu String

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
String name = "Ania";
Zmienna name zawiera napis Ania
String city = "New York";
Zmienna city zawiera napis New York
String message = "Hello!";
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";
Skrócona forma tworzenia i inicjalizacji zmiennych
String name = "Ania", city = "New York", message = "Hello!";
Przykład polecenia tworzenia i inicjalizacji zmiennych

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"
Konkatenacja dwóch łańcuchów

Przykłady:

Polecenie Uwaga
String name = "Ania" + "Ania";
name zawiera łańcuch AniaAnia
String city = "New York" + "Ania";
city zawiera łańcuch New YorkAnia
String message = "Hello! " + "Ania";
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:

" "
Łańcuch zawierający jedną spację

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”:

""
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
str.length()
Długość łańcucha
"abc".length() → 3
str.toUpperCase()
Na wielkie litery
"abc".toUpperCase() → "ABC"
str.toLowerCase()
Na małe litery
"ABC".toLowerCase() → "abc"
str.trim()
Usunięcie spacji na krańcach
"  x y  ".trim() → "x y"

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.

1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 2
Niedostępne
Wiadomość z przyszłości 👽
Wiadomość z przyszłości 👽
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 2
Niedostępne
Tworzenie pełnego imienia i nazwiska 👤
Tworzenie pełnego imienia i nazwiska 👤
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 2
Niedostępne
Cytat bohatera 🗣️
Cytat bohatera 🗣️
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 2
Niedostępne
Przetwarzanie danych z formularza 📝
Przetwarzanie danych z formularza 📝
Komentarze (5)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Anonymous #11808901 Poziom 4, Poland, Poland
11 września 2026
Czemu Andrzej ma 6 liter?
Agnieszka Poziom 27, Poland, Poland
31 grudnia 2025
Literówka w "Kon-ko-te-nacja 😆." powinno być ka
Agnieszka Poziom 27, Poland, Poland
31 grudnia 2025
chyba że nie zrozumiałam jakiegoś żartu :D
Agnieszka Poziom 27, Poland, Poland
31 grudnia 2025
con-cat-anation! miau
Arek Poziom 4, Poland, Poland
22 września 2026
Miau Miau 😁