Uređaj i metode za uspoređivanje nizova u Javi

Ljudi i strojevi međusobno djeluju pomoću posebno konstruiranih skupova znakova. Znakovi se prikupljaju riječima, a riječi - u rečenici ili redovima, od kojih je tekst sastavljen. Koji god program bio kreiran, skup znakova će uvijek biti prisutan, bez obzira na jezik.

Object String u Javi

U Javi, string je poseban objekt i označen je engleskom riječi String. Prije Java 170_06, ona se temeljila na nizu char vrijednosti, koje se sastojale od posebne vrste podatkovnih znakova. Objekt je 16-bitni Unicode znak sa zadanom vrijednošću 'u0000'. Također, postojala je i int offset varijabla koja je govorila o tome koji znak u tom nizu bi započeo. Varijabla int count opisuje broj znakova koji su prihvaćeni od strane niza, počevši s int offsetom. No, s pojavom Jave 9, varijable offset i count prestali su se koristiti. Još jedna inovacija bila je tzv. Pokušaj da se uđe to je učinjeno i prije, čak iu Javi 6, ali onda je bilo problema s performansama i odbio je dati tu ideju.


Inovacije u Javi 9

Niz vrijednosti char u novoj verziji postao je vrijednost bajta, budući da statistike pokazuju da je većina redaka mogla biti predstavljena znakovima u latinici. A za njih nije potrebno koristiti 2 bajta, dovoljno jedan. Stoga je odlučeno da se unese bajtni niz i koder bajtova, koji pohranjuje kodiranje - latin-1 ili utf-16 gdje je u prvom slučaju bajt nula, au drugom su jedinice. U red za svaki lik se dodjeljuje 1 bajt, i čim postoji znak koji se ne uklapa, onda za njegaDano je 2 bajta. Zbog toga duljina niza nije uvijek jednaka duljini niza. Oni se podudaraju samo ako sadrže latinično kodiranje. Niz je pola duljine niza, ako je kodiranje utf-16. Također u novoj verziji postoji konstantna boolean COMPACT_STRINGS.


Značajke klasa String

Klasa String je nepromjenjiva, što znači nepromjenjivost. Također, on je konačan, to jest, ne može se naslijediti od njega, ne možete napraviti bilo koju liniju na temelju ove klase. Njegovi se objekti ne mogu mijenjati nakon stvaranja. Zapravo, sve metode koje navodno mijenjaju string stvaraju novi objekt. Glavni razlozi za to su sigurnost i bazenski nizovi. S točke gledišta tokova, nema potrebe za usklađivanjem operacija. Možete proći crtu između potoka. Stoga ne brinite da će se linija promijeniti. Također je moguće pohraniti hash-kod izravno u objekt. Sigurnost se također sastoji u činjenici da se redovi mogu sigurno prenositi kao parametri za autorizaciju, a neuklonost osigurava da se oni neće presresti i promijeniti tijekom procesa prosljeđivanja. Skupni niz je određena linija predmemorije. U memoriji u kojoj su objekti pohranjeni, postoji mjesto gdje se stvaraju nizovi, kreirani navođenjem u kodu literala. Možete spremiti više veza po retku radi bržeg rada i spremanja memorije ako su njihove vrijednosti iste. Postoje posebne klase za implementaciju String varijabli - StringBuilder i StringBuffer. Obje su praktično identične, ali druga je nit-sigurna.

Metode klase String

Znizovi se mogu izvoditi koristeći različite metode. Oni vam omogućuju da učinite sljedeće:
  • usporedite duljine Java linija;
  • izdvaja nizne podnizove;
  • prima znak prema indeksu ili indeksu simbola;
  • provjeri crtu za prazninu;
  • utvrditi duljinu jedne linije;
  • pretvara niz u niz;
  • promijeniti registar;
  • spaja niz;
  • razbiti niz u niz;
  • prvo i na kraju izbrišite prazne znakove;
  • zamijenite podniz.
  • Prije uklanjanja metode offset i count, uklanjanje niza nizova radilo je malo drugačije nego u novoj verziji. Stvorio je novu ljusku za objekt String, dok je niz ostao star. Moguće je zamijeniti dio linije, ali postoji veza s prethodnom verzijom. To je dovelo do curenja memorije. Taj se problem može izbjeći samo pomoću dvostrukog dizajnera. U novoj verziji Jave niz pohranjuje samo podatke koje sadrži.

    Usporedba dvije Java linije

    Razmotrite jednu od metoda pobliže. Posebno se koristi posebna akcija u jeziku Java - usporedba nizova. Postoje dvije varijante metode compareTo () u klasi String za to. Metoda compareTo (String anotherString) koristi se za usporedbu nizova objekta Java String s dobivenim argumentom String i uspoređuje ih leksički. Vraća int s vrijednošću -1 za "manje", 0 za jednakost ili 1 za "više". Ova metoda je korisna za sortiranje algoritama. Slična metoda za uspoređivanje nizova u Javi je Equals (). Koristi logičke vrijednostijednakosti, a kad su objekti ekvivalentni, vraća true. Ako se prva opcija koristi za sortiranje, druga je potrebna za određivanje jednakosti. Druga mogućnost za uspoređivanje Java nizova je metoda compareToIgnoreCase (String str). Sličan je prethodnom, ali zanemaruje veličinu slova.

    Povezane publikacije