Тут згадані 10 найбільш популярних питань про рядки в Java
-
Як порівнювати рядки? Що використовувати: "
==
" абоequals()
?Коротко, "
==
" порівнює посилання на рядки, аequals()
порівнює значення, що містяться у цих рядках. Якщо ви не хочете перевірити, що два рядки є одним і тим же об'єктом, вам слід використовуватиequals()
.Також було б непогано знати концепцію пула рядків .
-
Чому
char[]
краще за рядки (String
) для захисту конфіденційної інформації?Рядки незмінні . Це означає, що одного разу створений рядок не змінюватиметься до безпосереднього запуску механізму збирача сміття. Що стосується масивом цілком очевидно, що ми можемо змінювати його елементи. Таким чином, конфіденційна інформація (наприклад, пароль) не зберігатиметься у відкритому вигляді в будь-якому місці програми.
-
Чи можемо ми передавати рядки як параметр під час використання оператора switch ?
Так, починаючи з 7-ої версії JDK. Раніше в 6-ій версії такої можливості не було.
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
-
Як конвертувати рядок на ціле значення?
int n = Integer.parseInt("10");
Аналогічно й інших примітивних типів Java.
-
Як поділити рядок на рядки з роздільником-пробілом?
Найпростіше використовувати регулярні вирази. "
\s
" Виступає як замінник символів пробілів, таких як "\t
", "\r
" , "\n
" .String[] strArray = aString.split("\\s+");
-
< Що насправді робить метод
substring()
?У JDK 6 метод
substring()
показував частину символів з існуючого рядка, але не створював окремого екземпляра рядка. Щоб створити новий рядок, представлений у вигляді масиву символів можна додати якийсь порожній рядок, наприклад, так:str.substring(m, n) + ""
В результаті ми отримуємо масив символів, який є нашим новим рядком. Такий підхід іноді може скоротити час виконання коду, тому що збирач сміття може знищити великі рядки, що не використовуються, і зберігати тільки підрядки.
У Oracle JDK 7 метод
substring()
створює новий масив символів, не використовуючи вже існуючий. Ви також можете подивитися на діаграму, що представляє різницю методів substring() у JDK 6 та JDK 7 . -
String проти StringBuilder проти StringBuffer
String
протиStringBuilder
:StringBuilder
змінюємо, це означає, що ми можемо змінити його зміст після створення об'єкта.StringBuilder
протиStringBuffer
:StringBuffer
синхронізований, це означає, що він функціонує коректно при використанні з кількох потоків одночасно, але повільніше, ніжStringBuilder
. -
Як повторити рядок кілька разів?
У Python, ми можемо просто помножити рядок на число
n
і тоді він буде повторюватися n разів. У Java, ми можемо використовувати методrepeat()
класуStringUtils
бібліотеки Apache Commons Lang.String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
-
Як конвертувати рядок у дату?
String str = "Sep 17, 2013"; Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); System.out.println(date); //Tue Sep 17 00:00:00 EDT 2013
-
Як порахувати кількість входжень певного символу у рядку?
Використовуйте клас
StringUtils
із бібліотеки Apache Commons Lang.int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ