Низ: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Djufy (беседа | приноси)
Символни низове в Java
Ред 347:
 
===String Builder===
 
==Символни низове в Java==
 
В езика за програмиране Java, символните низове са [[Обект_(програмиране)|обекти]].
В Java класът <code>String</code> се използва за създаване и обработка на символни низове. Последователностите от символи, записани в променлива от класа, са [[Неизменим_обект|неизменими]] (immutable). Веднъж записано съдържанието на едно място, то не може да бъде променяно директно.
 
=== Създаване на символни низове ===
Най-лесния начин за създаване на стринг е да се напише следното:
<source lang="java">String greeting = "Hello, world!";</source>
В този случай, <code>"Hello, world!"</code> е низов [[литерал]] – поредица от символи в кода, които са заградени с двойни кавички.
За отпечатване на съобщение в кавички е необходимо да се използва escape символ – обратна наклонена черта (\).
<source lang="java">String quotedString = “She said \”Hello, World!\”"; //She said “Hello, world!” </source>
Може да се създаде <code>String</code> обект като се използва ключовата дума <code>new</code> и [[Конструктор_(обектно-ореинтирано_програмиране)|конструктор]]. Класът <code>String</code> съдържа конструктори, които позволяват да се инициализира стойността на низа, чрез използване на различни източници, като масив от символи:
<source lang="java">
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
System.out.println(helloString);
</source>
=== Долепване на низове (конкатенция) ===
Класът <code>String</code> включва метод за долепване на два низа:
<source lang="java">
String greet = “Hello, “;
String name = “world!”;
String result = greet.concat(name); //Hello, world!
</source>
Резултата от това връща символен низ, който представлява <code>String greet</code> и долепен след него <code>String name</code>. Може да се използва метода <code>concat()</code> с низов литерал:
<source lang="java">
“Hello, ”.concat(“world”); //Hello, world!
</source>
Често за долепване на низове се използва оператора +, при който резултата отново е същият както и при горните два начина:
<source lang="java">
"Hello, " + "world" + "!" //Hello, world!
</source>
 
Операторът + често се използва с конструкцията <code>print</code> :
<source lang="java">
String greet = "Hello,";
String name = "world!";
String fullGreeting = greet + " " + name;
System.out.println(fullGreeting); //Hello, world!
</source>
Възможно е долепване на различни типове обекти. За всеки обект, който не е от тип <code>String</code>, съществува метод за преобразуването му - <code>toString()</code>.
 
=== Използване на String.format() ===
Класът <code>String</code> включва статичния метод <code>String.format()</code> за създаване на форматирани символни низове. Този метод позволява създаването на форматирани стрингове, които могат да се използват повторно, като само се променят параметрите. Този метод е подобен на метода <code>System.out.printf()</code>, който също форматира шаблонен низ и извежда стойности на местата на параметрите.
 
=== Извличане на част от низ ===
Извличането на част от низ в отделна променлива се прави чрез метода <code>substring()</code>, като зададем начална и крайна позиция в текста.
 
<code>String substring(int beginIndex, int endIndex)</code> - Резултата е нов стринг, като <code>beginIndex</code> показва от къде да започва новият стринг, а краят е <code>endIndex – 1</code>.
В случай че, не е упоменат <code>endIndex</code>, за край се счита последния символ от оригиналния символен низ.
 
=== Разцепване на низ по разделител ===
Методът <code>split</code> в класа <code>String</code> връща масив от символни низове състоящи се от поднизове разцепени от един или група от разделители.
 
Методите <code>toLowerCase()</code> и <code>toUpperCase()</code> връщат нов стринг като конвертират всички букви в малки или главни.
<code>trim</code> методът връща нов стринг премахвайки интервалите в началото и края на оригиналния символен низ.
 
=== Класовете <code>StringBuilder/ StringBuffer</code> ===
 
Класовете <code>StringBuilder/StringBuffer</code> са алтернатива на класът <code>String</code>. Те могат да бъдат използвани навсякъде където се използват символни низове. Тези класове са по-приспособими от класът <code>String</code>. При тях може да се добавя ново съдържание.
По-важни методи в <code>StringBuilder</code>:
 
* <code>StringBuilder(int capacity)</code> – конструктор с параметър начален капацитет.
* <code>capacity()</code> – връща дължината на символния низ – включва общия брой символи – заети и свободни
* <code>length()</code> - връща дължината на записания низ в променлива
* <code>charAt(int index)</code> - връща символа на указаната позиция
* <code>append(…)</code> - слепва низ, число или друга стойност след последния записан символ в буфера
* <code>delete(int start, int end)</code>– изтрива част от низ по зададена начална и крайна позиция
* <code>insert(int offset, String str)</code> – вмъква символен низ на дадена позиция
* <code>replace(int start, int end, String str)</code> – замества записания низ между началната и крайната позиция със стойността на променливата <code>str</code>
* <code>StringBuilder reverse()</code> – записва символите в нова променлива в обратен ред
* <code>toString()</code> - връща записаната информация в обекта на StringBuilder като резултат от тип String, който може да се запише в променлива на <code>String</code>
 
=== Сравняване на символни низове ===
* <code>boolean endsWith(String suffix)/ boolean startsWith(String prefix)</code> - връща стойност true ако стринга завършва или започва с подниз деклариран като стойност на метода.
* <code>int compareTo(String anotherString)</code> - сравнява два стринга лексикографски. За да бъдат два стринга еднакви, то те трябва да имат еднакъв брой символи и да бъдат подредени в един и същ ред. Този метод връща цяло положително, отрицателно число или 0 в зависимост от лексикографската наредба.
* <code>int compareToIgnoreCase(String str)</code> – този метод сравнява два стринга лексикографкски, без да взима предвид дали са малки или големи буквите.
* <code>boolean equals(Object anObject)</code> - връща резултат true ако стойностите на двата низа са еднакви и false ако са различни
* <code>boolean equalsIgnoreCase(String anotherString)</code> - сравнява двата низа дали са еднакви, без да взима предвид дали буквите са малки или големи.
 
 
==Източници==