„Здрасти, Амиго!“

— Но, Билаабо, ти вече ме поздрави.

„Наистина ли? Е, все още обичам да започвам всеки урок с тази фраза.“

„Днес ще изучаваме задълбочено класа String.“

„Но аз вече знам всичко за него. Дори знам, че класът String е неизменен.“

„Класът String има 46 метода. Колко от тях познавате?“

„Не повече от десет. Всъщност вероятно около 5 максимум.“

— Тогава слушайте.

„Създателите на Java забелязаха, че повечето низове в програмите не са предназначени да бъдат модифицирани, но понякога те все пак се модифицират. Много е досадно, когато създадете низ, запазите нещо важно в него, прехвърлите го на метод на някой друг и той се промени . За да не се случи това, те решиха да създадат Howто променливи, така и неизменни низове."

"Класът String е за неизменни низове, а класът StringBuilder е за променливи. Обектите от тези класове лесно се конвертират в другия тип. В повечето случаи разработчиците на Java просто се нуждаят от String, което доказва, че създателите на Java са бor прави."

„Така че, ако имам нужда от String, използвам класа String. И ако имам нужда от променлив низ, тогава използвам класа StringBuilder ?“

"Да. Всъщност има друг клас, наречен StringBuffer. Това е копие на StringBuilder, с изключение на това, че всички негови методи са декларирани като синхронизирани , така че обектът да може да бъде достъпен от различни нишки на програмата."

"А Howво ще кажете за този пример? Низът не се ли променя тук?"

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

"Не. Тук има два String обекта: «cat» и «cat-cat». Вторият се създава с помощта на първия, но първият обект не се променя. В действителност нещата тук са много по-интересни. Ето codeа компилаторът генерира, когато компorра вашия пример:"

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

„И така, StringBuilder почти винаги се използва за създаване на нови низове, но понякога компилаторът просто върши цялата работа instead of вас. Но вашата version е по-проста, не мислите ли?“

„Да, страхотно е, че Java има толкова усъвършенстван компилатор.“

„Е, сега нека преминем през методите на класа String:“

1) Как да намеря дължината на низ?

„ Методът за дължина връща дължината на низ (броя знаци в него).“

Метод(и) Примери)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Как да получа знак от низ?

„ Методът charAt връща символ от низ по неговия индекс. Индексите на знаците започват от 0.

Метод(и) Примери)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Как да получа знаци от низ?

Как да получа знаци от низ?

Метод(и) Примери)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Как да сравня низове?

„Методът equals проверява дали низовете съвпадат, а методът equalsIgnoreCase проверява дали низовете съвпадат, когато регистърът на буквите се игнорира.

Метод(и) Метод(и)
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) Как да направя всички букви в String главни or малки?

„ Методът toUpperCase връща копие на низа с всички главни букви.“

„ Методът toLowerCase връща копие на низа с всички малки букви.“

Метод(и) Примери)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Резултат:

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

Резултат:

s == "good news, everyone!";

6) Как да премахна интервалите в началото и края на низ?

„Методът за изрязване връща копие на низ без празни знаци в началото и края.“

Метод(и) Примери)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Резултат:

s == "Good news, everyone!";