Tutaj wymieniono 10 najczęściej zadawanych pytań na temat ciągów znaków w Javie
-
Jak porównać ciągi? Czego użyć: „
==
” lubequals()
?Krótko mówiąc, „
==
” porównuje odniesienia do ciągów, aleequals()
porównuje wartości zawarte w tych ciągach. Jeśli nie chcesz sprawdzać, czy dwa ciągi znaków są tym samym obiektem, powinieneś użyćequals()
.Dobrze byłoby również poznać koncepcję puli ciągów .
-
Dlaczego do ochrony poufnych informacji preferowane
char[]
są ciągi ( )?String
Ciągi są niezmienne . Oznacza to, że po utworzeniu ciągu nie zostanie on zmodyfikowany, dopóki nie zostanie uruchomiony moduł zbierający elementy bezużyteczne. W przypadku tablicy dość oczywiste jest, że możemy zmieniać jej elementy. Dzięki temu poufne informacje (takie jak hasło) nie będą przechowywane w postaci zwykłego tekstu w żadnym miejscu programu.
-
Czy podczas używania instrukcji switch możemy przekazywać ciągi znaków jako parametr ?
Tak, począwszy od wersji 7 JDK. Wcześniej w wersji 6 nie było to możliwe.
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
-
Jak przekonwertować ciąg na wartość całkowitą?
int n = Integer.parseInt("10");
To samo dotyczy innych typów pierwotnych w Javie.
-
Jak podzielić ciąg znaków na linie rozdzielane spacjami?
Najłatwiej jest użyć wyrażeń regularnych. „
\s
” zastępuje białe znaki, takie jak „\t
”, „\r
„, „\n
”.String[] strArray = aString.split("\\s+");
-
< Co właściwie robi ta metoda
substring()
?W JDK 6 metoda
substring()
pokazała część znaków z istniejącego ciągu, ale nie utworzyła osobnej instancji ciągu. Aby utworzyć nowy ciąg znaków reprezentowany jako tablica znaków, możesz dodać pusty ciąg, na przykład w następujący sposób:str.substring(m, n) + ""
Rezultatem jest tablica znaków, która jest naszym nowym ciągiem. Takie podejście może czasami skrócić czas wykonania kodu, ponieważ moduł zbierający elementy bezużyteczne może zniszczyć nieużywane duże ciągi i przechowywać tylko podciągi.
W Oracle JDK 7 metoda
substring()
tworzy nową tablicę znaków bez użycia istniejącej. Możesz także rzucić okiem na diagram przedstawiający różnicę między metodami substring() w JDK 6 i JDK 7 . -
String vs StringBuilder vs StringBuffer
String
vsStringBuilder
:StringBuilder
mutable, oznacza to, że możemy zmienić jego zawartość już po utworzeniu obiektu.StringBuilder
vsStringBuffer
:StringBuffer
synchronized, co oznacza, że działa poprawnie, gdy jest używany z wieloma wątkami jednocześnie, ale jest wolniejszy niżStringBuilder
. -
Jak powtórzyć linię kilka razy?
W Pythonie możemy po prostu pomnożyć ciąg przez liczbę
n
, a następnie powtórzy się n razy. W Javie możemy skorzystać z metodyrepeat()
zStringUtils
klasy bibliotecznej Apache Commons Lang.String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
-
Jak przekonwertować ciąg na datę?
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
-
Jak policzyć liczbę wystąpień określonego znaku w ciągu znaków?
Użyj klasy
StringUtils
z biblioteki Apache Commons Lang.int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
GO TO FULL VERSION