Stringi w Javie są opisywane przez klasę String i są statyczne, tj. W istniejącej linii nie można zmieniać znaków ani ich liczby. Oprócz standardowego tworzenia przez operator new, ciągi znaków można tworzyć bezpośrednio z literału ciągu. Jednocześnie, w celach optymalizacji, utworzone w ten sposób obiekty są dodatkowo przechowywane w wydzielonym obszarze – puli ciągów.
String s1 = "d" // строка будет сохранена в пуле // строка не будет сохранена в пуле // будет уничтожена сборщиком мусора String s2 = new String("a");
Jedną z zalet podziału ciągów na statyczne i dynamiczne jest to, że zwiększa to bezpieczeństwo tam, gdzie ciągi znaków są używane jako argumenty (na przykład przy otwieraniu baz danych, połączeniach internetowych, mechanizmach ładowania klas).
operacja +
Operacja + jest dostępna dla ciągów, umożliwiając połączenie kilku ciągów w jeden. Jeśli jeden z operandów nie jest ciągiem, jest automatycznie konwertowany na ciąg. W przypadku obiektów wykorzystuje się w tym celu metodę toString. Każda operacja wewnętrznie używa dynamicznego obiektu StringBuilder lub StringBuffer. Dlatego też, aby złożyć ciąg znaków z kilku, nadal optymalnie jest użyć jednego StringBuilder/StringBuffer na raz.wybór podciągu
Jest uwaga na temat metody substring - zwrócony ciąg używa tej samej tablicy bajtów, co oryginalny. Na przykład pobrałeś linię A z pliku o wielkości 1 MB. Znaleźli tam coś i podzielili to na oddzielną linię B o długości 3 znaków. Linia B w rzeczywistości również zajmuje tyle samo 1MB.String s ="very .... long string from file"; // совместно использует ту же память что и s String sub1 = s.substring(2,4); // этот obiekt использует отдельный массив на 4 символа String sub2 = new String(s.substring(2,4));
podstawowe metody
- CompareTo (String anotherString) - leksygraficzne porównanie ciągów znaków;
- CompareToIgnoreCase (String str) - leksygraficzne porównanie ciągów znaków bez uwzględniania wielkości liter;
- regionMatches (boolean generateCase, int toffset, String other, int ooffset, int len) - sprawdza tożsamość regionów stringów, można określić wielkość liter;
- regionMatches (int toffset, String other, int ooffset, int len) - test na tożsamość regionów stringów;
- concat (String str) - zwraca połączenie dwóch ciągów znaków;
- zawiera (CharSequence s) - sprawdza, czy podany ciąg znaków znajduje się w ciągu znaków;
- endWith (Przyrostek String) – sprawdza, czy ciąg kończy się podanym przyrostkiem;
- zaczyna się od (przedrostek String) – sprawdza, czy ciąg zaczyna się od podanego przedrostka;
- startWith (String prefix, int toffset) - sprawdza, czy ciąg znaków na podanej pozycji zaczyna się od podanego przedrostka;
- równa się (Object anObject) - sprawdza, czy ciąg znaków jest identyczny z podanym obiektem;
- getBytes () - zwraca bajtową reprezentację ciągu;
- getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin) - zwraca znakową reprezentację sekcji ciągu znaków;
- hashCode () - kod skrótu ciągu;
- indeksOf (int ch) - szukaj pierwszego wystąpienia znaku w ciągu;
- indeksOf (int ch, int fromIndex) - szuka pierwszego wystąpienia znaku w ciągu znaków od podanej pozycji;
- indeksOf (String str) - wyszukaj pierwsze wystąpienie podanego podciągu;
- indeksOf (String str, int fromIndex) - szuka pierwszego wystąpienia podanego podciągu z podanej pozycji;
- lastIndexOf (int ch) - szukaj ostatniego wystąpienia symbolu;
- lastIndexOf (int ch, int fromIndex) - wyszukaj ostatnie wystąpienie znaku z podanej pozycji;
- lastIndexOf (String str) - szukaj ostatniego wystąpienia ciągu;
- lastIndexOf (String str, int fromIndex) - szuka ostatniego wystąpienia ciągu znaków z podanej pozycji;
- zamień (char oldChar, char newChar) - zamiana jednego znaku w ciągu znaków na inny;
- zamień (cel CharSequence, zamiana CharSequence) - zamiana jednego podłańcucha na inny;
- substring (int BeginIndex, int endIndex) - zwraca podciąg jako ciąg znaków;
- toLowerCase () - konwertuje ciąg znaków na małe litery;
- toLowerCase (Locale locale) - konwertuje ciąg znaków na małe litery przy użyciu określonych ustawień regionalnych;
- toUpperCase() - konwertuje ciąg znaków na wielkie litery;
- toUpperCase (Locale locale) - konwertuje ciąg znaków na wielkie litery przy użyciu określonych ustawień regionalnych;
- trim() - przycina puste znaki na końcach łańcucha;
- valueOf(a) - statyczne metody konwersji różnych typów na ciąg znaków.
- dopasowania (String regex) - czy ciąg pasuje do podanego wyrażenia regularnego;
- zamieńAll (String regex, String rplс) - zastępuje wszystkie wystąpienia ciągów znaków spełniających wyrażenie regularne określonym ciągiem znaków;
- zamieńFirst (String regex, String rplс) - zastępuje pierwsze wystąpienie ciągu znaków pasującego do wyrażenia regularnego określonym ciągiem znaków;
- split (String regex) - dzieli ciąg na części, granicami podziału są wystąpienia ciągów znaków spełniające wyrażenie regularne;
- split (String regex, int limit) - podobny do poprzedniego, ale z ograniczeniem stosowania wyrażenia regularnego do łańcucha do wartości granicznej. Jeśli limit>0, wówczas rozmiar zwróconej tablicy ciągów nie przekroczy limitu. Jeśli limit<=0, wówczas wyrażenie regularne jest stosowane do ciągu nieograniczoną liczbę razy.
GO TO FULL VERSION