Zařízení a metody pro porovnávání řetězců v jazyce Java

Lidé a stroje vzájemně spolupracují pomocí speciálně sestavených znakových sad. Znaky jsou shromažďovány slovy a slovy - ve větě nebo liniích, které tvoří text. Ať už je vytvořen jakýkoli program, vždy bude přítomna znaková sada bez ohledu na jazyk.

String objektu v jazyce Java

V Javě je řetězec speciálním objektem a je označen anglickým slovem String. Před kódem Java 170_06 byl založen na řadě hodnot char, které se skládají ze speciálního typu datového znaku. Objekt byl 16bitový znak Unicode s výchozí hodnotou 'u0000'. Také existovala int-offsetová proměnná, která hovořila o tom, jaký znak v tomto poli začne řetězec. Proměnný int count popisuje počet znaků, které řetězec přijme, počínaje kompenzací int. Ale s příchodem Java 9, proměnné offset a count přestaly být použity. Další inovace byla tzv. "Koncepční kompaktní řetězec". Pokus o vstup do něj byl proveden předtím, dokonce i v Javě 6, ale pak byly problémy s výkonem a odmítl dát tento nápad.


Inovace v Javě 9

Hodnota char charakterizace v nové verzi se stala hodnotou bytu, jelikož statistiky ukazují, že většina řádků může být reprezentována znaky v latinské abecedě. A pro ně není nutné používat 2 bajty, stačí jeden. Proto bylo rozhodnuto zadat bytové pole a byte kodér, který uchovává kódování - latin-1 nebo utf-16, kde v prvním případě je bajt nula a v druhém jsou jednotky. V řádku pro každý znak je přiděleno 1 bajt a jakmile je znak, který se nehodí, pak pro nějZobrazí se 2 bajty. Protože délka řetězce není vždy stejná jako délka pole. Jsou shodné pouze v případě, že obsahují kódování latin-1. Řetězec je poloviční délka pole, pokud je kódování utf-16. Také v nové verzi existuje neustálý boolean COMPACT_STRINGS.


Vlastnosti třídy String

Třída String je neměnná, což znamená neměnnost. Také on je finále, to znamená, že z něj nemůže být zděděno, nemůžete na této třídě dělat žádnou linii. Jejich objekty nelze po vytvoření vytvořit. Ve skutečnosti všechny metody, které údajně mění řetězec, vytvářejí nový objekt. Hlavními důvody jsou bezpečnost a pool String. Z hlediska toků není třeba synchronizovat operace. Můžete propouštět čáru mezi proudy. Takže nebojte se, že linka bude změněna. Je také možné ukládat kód hash přímo do objektu. Zabezpečení také spočívá v tom, že řádky mohou být bezpečně předány jako parametry pro autorizaci a neodstranitelnost zaručuje, že nebudou během procesu předávání zachyceny a změněny. String pool je určitý řádek mezipaměti. V paměti, kde jsou uloženy objekty, je místo, kde jsou řetězce vytvářeny, vytvořené zadáním v kódu literálů. Můžete uložit více odkazů na řádek pro rychlejší práci a paměť, pokud jsou jejich hodnoty stejné. Existují speciální třídy pro implementaci řetězcových proměnných - StringBuilder a StringBuffer. Obě jsou prakticky shodné, ale druhá je bezpečné.

Metody třídy String

Zřetězce lze spustit pomocí různých metod. Umožňují následující operace:
  • porovnejte délky linek Java;
  • extrahuje řetězec podřetězce;
  • získají znak podle indexu nebo indexu symbolů;
  • zkontrolujte linku pro prázdnotu;
  • zjistit délku jednoho řádku;
  • transformuje řetězec do pole;
  • změna registru;
  • připojte řetězec;
  • prolomení řetězce do pole;
  • odstraňte prázdné znaky nejprve a na konci;
  • vyměňte podřetězec.
  • Před odstraněním metody posunutí a počítání bylo odstranění řetězce podřetězce pracováno trochu jinak než v nové verzi. Vytvořil pouze nový objekt pro objekt String, zatímco matice zůstala stará. Bylo možné nahradit část linky, ale odkaz na předchozí verzi. To vedlo k úniku paměti. Tomuto problému je možné zabránit pouze použitím duplicitního návrháře. V nové verzi Java obsahuje řetězec pouze data, která obsahuje.

    Porovnání dvou linek Java

    Zvažte jednu z metod bližší. Zvláště se používá zvláštní akce v jazyce Java - porovnání řetězců. Existují dvě varianty metody compareTo () ve třídě String. Metoda compareTo (String anotherString) se používá k porovnání řetězců objektu Java String s získaným argumentem String a porovnává je lexikálně. Vrací int s hodnotou -1 pro "méně", 0 pro rovnost nebo 1 pro "více". Tato metoda je užitečná pro třídění algoritmů. Podobná metoda pro porovnávání řetězců v Javě je Equals (). Používá logické hodnotyrovnost, a když objekty jsou ekvivalentní, vrátí true. Pokud je pro třídění použita první možnost, druhá je potřebná k určení rovnosti. Další možností porovnání řetězců v jazyce Java je metoda compareToIgnoreCase (String str). Je to podobné jako předchozí, ale ignoruje případ.

    Související publikace