Urządzenie i metody porównywania łańcuchów w Javie

Ludzie i maszyny współdziałają ze sobą za pomocą specjalnie skonstruowanych zestawów znaków. Postacie są gromadzone w słowach i słowach - w zdaniu lub liniach, z których składa się tekst. Bez względu na to, jaki program zostanie utworzony, zestaw znaków będzie zawsze obecny, niezależnie od języka.

Ciąg znaków w języku Java

W języku Java ciąg znaków jest obiektem specjalnym i jest oznaczany przez angielskie słowo String. Przed wersją Java 170_06 bazowała ona na tablicy wartości char, składającej się ze specjalnego typu danych char. Obiekt był 16-bitowym znakiem Unicode z domyślną wartością "u0000". Istniała również zmienna typu offset int, która mówiła o tym, który znak w tej tablicy zaczynałby się łańcuch. Zmienna liczba_cłów opisuje liczbę znaków, które są akceptowane przez ciąg znaków, zaczynając od przesunięcia typu int. Jednak wraz z nadejściem Java 9 zmienne przesunięcie i licznik przestały być używane. Kolejną innowacją był tak zwany "koncept kompaktowy". Próba wejścia w to została wykonana wcześniej, nawet w Javie 6, ale wtedy pojawiły się problemy z wydajnością i odmówiła podania tego pomysłu.


Innowacje w Javie 9

Tablica wartości znaków w nowej wersji stała się wartością bajtu, ponieważ statystyki pokazują, że większość linii może być reprezentowana przez znaki alfabetu łacińskiego. A dla nich nie jest konieczne użycie 2 bajtów, wystarczy jeden. W związku z tym postanowiono wprowadzić tablicę bajtów i koder bajtowy, który przechowuje kodowanie - latin-1 lub utf-16, gdzie w pierwszym przypadku bajt wynosi zero, a w drugim są jednostki. W linii dla każdej postaci jest przydzielany 1 bajt, a jak tylko pojawi się postać, która nie pasuje, to dla niegoPodano 2 bajty. Z tego powodu długość łańcucha nie zawsze jest równa długości tablicy. Zbiegają się tylko wtedy, gdy zawierają kodowanie Latin-1. Łańcuch stanowi połowę długości tablicy, jeśli kodowanie to utf-16. Również w nowej wersji istnieje stała wartość bojowa COMPACT_STRINGS.


Cechy klasy String

Klasa String jest niezmienna, co oznacza niezmienność. Poza tym jest on ostateczny, to znaczy nie można go z niego odziedziczyć, nie można tworzyć linii na podstawie tej klasy. Jego obiektów nie można zmienić po utworzeniu. W rzeczywistości wszystkie metody, które rzekomo zmieniają ciąg, tworzą nowy obiekt. Głównymi powodami tego są zabezpieczenia i pula String. Z punktu widzenia przepływów nie ma potrzeby synchronizowania operacji. Możesz przesłać linię między strumieniami. Więc nie martw się, że linia zostanie zmieniona. Możliwe jest także zapisanie kodu skrótu bezpośrednio w obiekcie. Bezpieczeństwo polega również na tym, że wiersze mogą być bezpiecznie przekazywane jako parametry do autoryzacji, a nieusuwalność zapewnia, że ​​nie zostaną przechwycone i zmienione podczas procesu przekazywania. Pula ciągów to pewna linia pamięci podręcznej. W pamięci, w której przechowywane są obiekty, znajduje się miejsce, w którym tworzone są ciągi, utworzone przez podanie w kodzie literałów. Możesz zapisać wiele linków w linii, aby przyspieszyć pracę i oszczędzać pamięć, jeśli ich wartości są takie same. Istnieją specjalne klasy do implementacji zmiennych String - StringBuilder i StringBuffer. Oba są praktycznie identyczne, ale drugi jest bezpieczny dla wątków.

Metody klasy String

Złańcuchy mogą być uruchamiane przy użyciu różnych metod. Pozwalają one wykonać następujące czynności:
  • porównać długości linii Java;
  • wyodrębnia łańcuchy tekstowe;
  • otrzymuje znak według indeksu lub indeksu symboli;
  • sprawdź linię dla pustki;
  • , aby dowiedzieć się długość jednej linii;
  • przekształca łańcuch w tablicę;
  • zmienić rejestr;
  • połączyć ciąg;
  • , aby podzielić łańcuch na tablicę;
  • usuń najpierw puste znaki i na końcu;
  • zamień podciąg.
  • Przed usunięciem metody offset i count, usunięcie ciągu napisów działało nieco inaczej niż w nowej wersji. Stworzył tylko nową powłokę dla obiektu String, podczas gdy tablica pozostała stara. Możliwe było zastąpienie części linii, ale był link do poprzedniej wersji. Doprowadziło to do wycieków pamięci. Tego problemu można uniknąć tylko za pomocą zduplikowanego projektanta. W nowej wersji Java ciąg zawiera tylko te dane, które zawiera.

    Porównanie dwóch linii Javy

    Dokładniej przyjrzyj się jednej z metod. Szczególnie używana jest specjalna akcja w języku Java - porównywanie ciągów. Istnieją dwa warianty metody compareTo () w klasie String. Metoda compareTo (String anotherString) służy do porównywania ciągów obiektu Java String z uzyskanym argumentem String i porównywania ich leksykalnie. Zwraca int z wartością -1 dla "mniej", 0 dla równości lub 1 dla "więcej". Ta metoda jest przydatna przy sortowaniu algorytmów. Podobną metodą porównywania napisów w Javie jest Equals (). Używa wartości logicznychrówność, a gdy obiekty są równoważne, zwraca true. Jeśli do sortowania używana jest pierwsza opcja, druga jest potrzebna do określenia równości. Inną opcją porównywania napisów Java jest metoda compareToIgnoreCase (String str). Jest podobny do poprzedniego, ale ignoruje wielkość liter.

    Powiązane publikacje