Клас string java, блог про шифрування
Кожен рядок, що створюється за допомогою оператора new або за допомогою литерала (укладена в подвійні апострофи), є об'єктом класу String. Особливістю об'єкту класу String є те, що його значення не може бути змінено після створення об'єкта за допомогою будь-якого методу класу, так як будь-яка зміна рядка призводить до створення нового об'єкта. При цьому посилання на об'єкт класу String можна змінити так, щоб вона вказувала на інший об'єкт і тим самим на інше значення.
Клас String підтримує кілька конструкторів, наприклад: String (), String (String str). String (byte asciichar []). String (char [] unicodechar). String (StringBuffer sbuf). String (StringBuilder sbuild) і ін. Ці конструктори використовуються для створення об'єктів класу String на основі ініціалізації значеннями з масиву типу char. byte і ін. Наприклад, при виклику конструктора
new String (str.getChars (), "UTF-8").
де str - рядок у форматі Unicode, можна встановити необхідний алфавіт за допомогою регіональної кодування як другий параметр конструктора, в даному випадку кирилицю. Коли Java зустрічає літерал, укладений в подвійні лапки, автоматично створюється об'єкт типу String. на який можна встановити посилання. Таким чином, об'єкт класу String можна створити, присвоївши посиланням на клас значення існуючого литерала, або за допомогою оператора new і конструктора, наприклад:
String s1 = "sun.com";
String s2 = new String ( "sun.com");
Клас String містить наступні методи для роботи з рядками:
String concat (String s) або "+" - злиття рядків;
booleanequals (Objectob) і equalsIgnoreCase (Strings) - порівняння рядків з урахуванням і без урахування регістра відповідно;
intcompareTo (Strings) і compareToIgnoreCase (Strings) - лексикографическое порівняння рядків з урахуванням і без урахування регістру. Метод здійснює віднімання кодів символів викликає і переданої в метод рядків і повертає ціле значення. Метод повертає значення нуль в разі, коли equals () повертає значення true;
booleancontentEquals (StringBufferob) - порівняння рядка
і вмісту об'єкта типу StringBuffer;
Stringsubstring (intn, intm) - витяг з рядка подстроки довжини m-n. починаючи з позиції n. Нумерація символів в рядку починається з нуля;
Stringsubstring (intn) - витяг з рядка підрядка, починаючи з позиції n;
intlength () - визначення довжини рядка;
staticStringvalueOf (значення) - перетворення змінної базового типу до рядка;
StringtoUpperCase () / toLowerCase () - перетворення всіх символів викликає рядки в верхній / нижній регістр;
Stringreplace (charс1, charс2) - заміна в рядку всіх входжень першого символу другим символом;
Stringintern () - заносить рядок в "пул" литералов і повертає її об'єктну посилання;
Stringtrim () - видалення всіх прогалин на початку і кінці рядка;
charcharAt (intposition) - повернення символу з вказаної позиції (нумерація з нуля);
booleanisEmpty () - повертає true. якщо довжина рядка дорівнює 0;
byte [] getBytes (). getChars (int srcBegin, int srcEnd, char [] dst, int dstBegin) - витяг символів рядка в масив байт або символів;
String [] split (Stringregex). split (Stringregex, intlimit) - пошук входження в рядок заданого регулярного виразу (роздільник) і розподіл вихідної рядки відповідно до цього на масив рядків.
У всіх випадках виклику методів, що змінюють рядок, створюється новий об'єкт типу String.
В з ледующем прикладі масив символів і ціле число перетворюються в об'єкти типу String з використанням методів цього класу.
/ * Приклад # 1. використання методів: DemoString.java * /
publicclass DemoString
publicstaticvoid main (String [] args)
str = str.toUpperCase (); // str = "JAVA"
String num = String.valueOf (6); // num = "6"
num = str.concat ( "-" + num); // num = "JAVA-6"
char ch = str.charAt (2); // ch = 'V'
i = str.lastIndexOf ( 'A'); // i = 3 (-1 якщо немає)
num = num.replace ( "6", "SE"); // num = "JAVA-SE"
str.substring (0, 4) .toLowerCase (); // java
str = num + "-6"; // str = "JAVA-SE-6"
String [] arr = str.split ( "-");
for (String ss. arr)
> else В результаті буде виведений масив рядків: При використанні методів класу String. змінюють рядок, створюється новий змінений об'єкт класу String. Зберегти зміни в об'єкті класу String можна тільки із застосуванням оператора присвоювання, тобто установкою посилання на цей новий об'єкт. У наступному прикладі буде виведено останнім після присвоювання значення str. / * Приклад # 2. передача рядка за посиланням: RefString.java * / publicclass RefString
publicstatic void changeStr (String s)
s.concat ( "Microsystems"); // створюється новий рядок publicstaticvoid main (String [] args)
String str = new String ( "Sun"); В результаті буде виведений рядок: Так як об'єкт був переданий по посиланню, то будь-яка зміна об'єкта в методі має зберігатися і для вихідного об'єкта, так як обидва посилання рівноправні. Цього не відбувається з тієї причини, що виклик методу concat (Strings) призводить до створення нового об'єкта. У наступному прикладі розглянуто особливості зберігання та ідентифікації об'єктів на прикладі виклику методу equals (). порівнює рядок String із зазначеним об'єктом і методу hashCode (). який обчислює хеш-код об'єкта. / * Приклад # 3. порівняння посилань і об'єктів: EqualStrings.java * / publicclass EqualStrings
publicstaticvoid main (String [] args)
String s1 = "Java"; String s2 = "Java"; String s3 = new String ( "Java"); System.out .println (s1 + "==" + s2 + System.out .println (s1 + "==" + s3 + System.out.println (s1 + "equals" + s2 + "." System.out.println (s1 + "equals" + s3 + "." В результаті, наприклад, буде виведено: Java equals Java. true Java equals Java. true Незважаючи на те, що однакові за значенням рядкові об'єкти розташовані в різних ділянках пам'яті, значення їх хеш-кодів збігаються. Існує можливість заощадити пам'ять і перевизначити посилання з об'єкта на літерал за допомогою виклику методу intern (). publicclass DemoIntern
publicstaticvoid main (String [] args)
String s2 = new String ( "Java"); Нижче розглянута сортування масиву рядків методом вибору. publicclass SortArray
publicstaticvoid main (String [] args)
String a [] =
"Albina", "Anastasya", "ALLA", "AnnA">; for (int j = 0; j for (int j = 0; j for (int i = j + 1; i if (a [i] .compareTo (a [j]) <0)
String temp = a [j]; while (++ i System.out .print (a [i] + ""); Виклик методу trim () забезпечує видалення всіх початкових і кінцевих символів пробілів. Метод compareTo () виконує лексикографическое порівняння рядків між собою за правилами Unicode.