Zariadenie a metódy na porovnávanie reťazcov v jazyku Java

Ľudia a stroje interagujú medzi sebou pomocou špeciálne zostavených znakových sád. Znaky sa zhromažďujú slovom a slovám - vo vete alebo riadkoch, z ktorých je text zložený. Bez ohľadu na to, či je program vytvorený, bude vždy prítomná znaková sada bez ohľadu na jazyk.

Object String v jazyku Java

V jazyku Java reťazec je špeciálny objekt a označuje anglické slovo String. Pred javom 170_06 bola založená na súbore znakových hodnôt pozostávajúcich zo špeciálneho typu dátového znaku. Objekt bol 16-bitový znak Unicode s predvolenou hodnotou "u0000". Tiež tam bola int ofsetová premenná, ktorá hovorila o tom, aký znak v tomto poli by reťazec začal. Premenný int count opisuje počet znakov, ktoré reťazec akceptuje, začínajúc odsadením int. Ale s príchodom Java 9, premenné premenné a počet prestali byť použité. Ďalšou inováciou bol takzvaný "koncept kompaktného reťazca". Pokus o vstup do nej bol vykonaný predtým, dokonca aj v Java 6, ale potom boli problémy s výkonom a odmietol dať tento nápad.


Inovácie v jazyku Java 9

Pole char hodnôt v novej verzii sa stalo hodnotou bajtov, keďže štatistiky ukazujú, že väčšina riadkov môže byť reprezentovaná znakmi latinskej abecedy. A pre nich nie je nutné používať 2 bajty, dosť jedno. Preto bolo rozhodnuté, že zadáme bytové pole a byte kodér, ktorý uloží kódovanie - latin-1 alebo utf-16, kde v prvom prípade je bajt nula a v druhom sú jednotky. V riadku pre každý znak je pridelený 1 bajt, a akonáhle je znak, ktorý sa nezmestí, potom pre neho2 bajty sú uvedené. Z tohto dôvodu nie je dĺžka reťazca vždy rovná dĺžke poľa. Zhodujú sa iba vtedy, ak obsahujú kódovanie latin-1. Reťazec je polovica dĺžky poľa, ak je kódovanie utf-16. Taktiež v novej verzii sa nachádza konštantný boolean COMPACT_STRINGS.


Vlastnosti triedy String

Trieda String je nemenná, čo znamená nemennosť. Taktiež je konečným, to znamená, že z neho nemôže byť zdedený, nemôžete robiť žiadnu líniu založenú na tejto triede. Jeho objekty sa nedajú zmeniť po vytvorení. V skutočnosti všetky metódy, ktoré pravdepodobne menia reťazec, vytvárajú nový objekt. Hlavnými dôvodmi sú bezpečnosť a pool String. Z hľadiska tokov nie je potrebné synchronizovať operácie. Môžete prejsť čiarou medzi prúdmi. Takže sa nebojte, že linka bude zmenená. Je tiež možné uložiť kód hash priamo do objektu. Bezpečnosť spočíva aj v tom, že riadky môžu byť bezpečne odovzdané ako parametre na autorizáciu a neodstrániteľnosť zabezpečuje, že nebudú zachytené a zmenené počas procesu presmerovania. String pool je určitý rad vyrovnávacej pamäte. V pamäti, kde sú uložené objekty, je miesto, kde sú reťazce vytvorené, vytvorené zadaním v kóde literálov. Môžete uložiť viac odkazov na riadok pre rýchlejšiu prácu a uložiť pamäť, ak sú ich hodnoty rovnaké. Existujú špeciálne triedy na implementáciu reťazcových premenných - StringBuilder a StringBuffer. Obaja sú prakticky totožné, ale druhá je bezpečné pre závit.

Metódy triedy String

Zreťazce môžu byť spustené pomocou rôznych metód. Umožňujú vám nasledovné:
  • porovnávať dĺžky liniek Java;
  • extrahuje reťazec substrings;
  • dostanú znak podľa indexu alebo indexu symbolov;
  • skontrolujte linku pre prázdnotu;
  • zistiť dĺžku jedného riadku;
  • transformuje reťazec do poľa;
  • zmeniť register;
  • spojiť reťazec;
  • prelomiť reťazec do poľa;
  • Vymažte prázdne znaky najprv a na konci;
  • vymeňte podreťazec.
  • Pred odstránením metódy posunu a počítania sa odstránenie reťazca podreťazca líšilo trochu inak než v novej verzii. Vytvoril iba nový shell pre objekt String, zatiaľ čo pole zostalo staré. Bolo možné nahradiť časť linky, ale odkaz na predchádzajúcu verziu. To viedlo k úniku pamäte. Tento problém by sa dalo vyhnúť len použitím duplicitného dizajnéra. V novej verzii Java reťazec ukladá iba údaje, ktoré obsahuje.

    Porovnanie dvoch liniek Java

    Zvážte jednu z metód podrobnejšie. Zvlášť sa používa špeciálna akcia v jazyku Java - porovnanie reťazcov. Existujú dva varianty metódy compareTo () v triede String. Metóda compareTo (String anotherString) sa používa na porovnanie reťazcov objektu Java String s získaným argumentom String a porovnáva ich lexikálne. Vracia int s hodnotou -1 pre "menej", 0 pre rovnosť alebo 1 pre "viac". Táto metóda je užitočná pri triedení algoritmov. Podobná metóda porovnávania reťazcov v jazyku Java je Equals (). Používa logické hodnotyrovnosť, a ak sú objekty ekvivalentné, vracia pravdu. Ak je prvá možnosť použitá na triedenie, druhá je potrebná na určenie rovnosti. Ďalšou možnosťou porovnávania reťazcov Java je metóda compareToIgnoreCase (String str). Je to podobné predchádzajúcemu, ale ignoruje prípad.

    Súvisiace publikácie