"Cześć, Amigo!"

„Ale, Bilaabo, już się przywitałeś”.

„Naprawdę? Cóż, nadal lubię zaczynać każdą lekcję od tego zdania”.

„Dzisiaj przyjrzymy się dogłębnie klasie String”.

„Ale wiem już o tym wszystko. Wiem nawet, że klasa String jest niezmienna”.

„Klasa String ma 46 metod. Ile z nich znasz?”

„Nie więcej niż dziesięć. Właściwie prawdopodobnie około pięciu”.

— Więc słuchaj.

„Twórcy Javy zauważyli, że większość ciągów znaków w programach nie jest przeznaczona do modyfikowania, ale czasami i tak są one modyfikowane. To bardzo irytujące, gdy tworzysz ciąg znaków, zapisujesz w nim coś ważnego, przekazujesz to do czyjejś metody i ulega zmianie Aby temu zapobiec, postanowili stworzyć zarówno zmienne, jak i niezmienne łańcuchy”.

„Klasa String jest przeznaczona dla łańcuchów niezmiennych, a klasa StringBuilder dla zmiennych. Obiekty tych klas można łatwo przekonwertować na inny typ. W większości przypadków programiści Javy po prostu potrzebują łańcuchów, co dowodzi, że twórcy Javy mieli rację”.

„Więc jeśli potrzebuję String, używam klasy String. A jeśli potrzebuję zmiennego String, to używam klasy StringBuilder ?”

„Tak. Właściwie istnieje inna klasa o nazwie StringBuffer. Jest to kopia StringBuilder, z wyjątkiem tego, że wszystkie jej metody są zadeklarowane jako zsynchronizowane , dzięki czemu dostęp do obiektu można uzyskać z różnych wątków programu”.

„A co z tym przykładem? Czy łańcuch nie jest tutaj zmieniany?”

String s = "cat";
s = s + "-" + s;

„Nie. Są tu dwa obiekty String: «cat» i «cat-cat». Drugi jest tworzony przy użyciu pierwszego, ale pierwszy obiekt się nie zmienia. W rzeczywistości tutaj jest o wiele bardziej interesująco. Oto kod kompilator generuje, gdy kompiluje twój przykład:”

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

„Tak więc StringBuilder jest prawie zawsze używany do tworzenia nowych łańcuchów, ale czasami kompilator po prostu wykonuje całą pracę za ciebie. Ale twoja wersja jest prostsza, nie sądzisz?”

„Tak, to niesamowite, że Java ma tak zaawansowany kompilator”.

„Cóż, przejdźmy teraz przez metody klasy String:”

1) Jak znaleźć długość ciągu?

„ Metoda length zwraca długość ciągu znaków (liczbę znaków w nim zawartych).”

Metoda(y) Przykład(y)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Jak uzyskać postać z ciągu znaków?

„ Metoda charAt zwraca znak z ciągu według jego indeksu. Indeksy znaków zaczynają się od 0.

Metoda(y) Przykład(y)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Jak uzyskać znaki z ciągu znaków?

Jak uzyskać znaki z ciągu znaków?

Metoda(y) Przykład(y)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Jak porównać ciągi?

„Metoda equals sprawdza, czy ciągi są zgodne, a metoda equalsIgnoreCase sprawdza, czy ciągi są zgodne, gdy wielkość liter jest ignorowana.

Metoda(y) Metoda(y)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) Jak zrobić, aby wszystkie litery w łańcuchu były wielkie lub małe?

„ Metoda toUpperCase zwraca kopię łańcucha ze wszystkimi wielkimi literami”.

„ Metoda toLowerCase zwraca kopię łańcucha ze wszystkimi małymi literami”.

Metoda(y) Przykład(y)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Wynik:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Wynik:

s == "good news, everyone!";

6) Jak usunąć spacje na początku i na końcu łańcucha?

„Metoda przycinania zwraca kopię ciągu znaków bez spacji na początku i na końcu”.

Metoda(y) Przykład(y)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Wynik:

s == "Good news, everyone!";