Устройство и методи за сравняване на низове в Java

Хората и машините взаимодействат помежду си, използвайки специално изградени набори от символи. Знаците се събират с думи, а думите - в изречението или редовете, от които е съставен текстът. Каквато и да е програмата, създаването на символи винаги ще присъства, независимо от езика.

Object String в Java

В Java, низът е специален обект и се обозначава с английската дума String. Преди Java 170_06 тя се основаваше на масив от char стойности, състоящи се от специален тип данни char. Обектът е 16-битов Unicode символ със стойността по подразбиране 'u0000'. Също така, имаше int отместване променлива, която говори за кой символ в този масив низът ще започне. Променливата int count описва броя на символите, които се приемат от низ, започвайки с int offset. Но с появата на Java 9, променливите компенсират и броя престават да се използват. Друго нововъведение е така наречената „концептуална компактна верига“. Опит за влизане беше направен и преди, дори в Java 6, но след това имаше проблеми с изпълнението и отказа да даде тази идея.


Иновации в Java 9

Значението на символите в новата версия се превърна в байтова стойност, тъй като статистиката показва, че повечето от редовете могат да бъдат представени от символи в латиницата. И за тях не е необходимо да се използват 2 байта, достатъчно един. Затова беше решено да се въведе байт масив и байт кодер, който съхранява кодирането - latin-1 или utf-16, където в първия случай байтът е нула, а във втория има единици. В реда за всеки символ се разпределя 1 байт, и веднага след като има знак, който не се вписва, тогава за негоДадени са 2 байта. Поради това, дължината на низа не винаги е равна на дължината на масива. Те съвпадат само ако съдържат латинско-1 кодиране. Стрингът е половината от дължината на масива, ако кодирането е utf-16. Също така в новата версия има константно булево COMPACT_STRINGS.


Характеристики на класа String

Класът String е неизменен, което означава неизменност. Също така, той е финалът, т.е. не може да се наследи от него, не можете да направите никаква линия въз основа на този клас. Нейните обекти не могат да се променят след създаването. Всъщност всички методи, които предполагат промяна на низа, създават нов обект. Основните причини за това са сигурността и пула String. От гледна точка на потоците, няма нужда да се синхронизират операциите. Можете да преминете линия между потоци. Така че не се притеснявайте, че линията ще бъде променена. Също така е възможно да се съхранява хеш кода директно в обекта. Сигурността се състои и в това, че редовете могат да бъдат безопасно предавани като параметри за упълномощаване, а невъзможността за отстраняване гарантира, че те няма да бъдат прихванати и променени по време на процеса на препращане. Струнният пул е определена линия от кеша. В паметта, където се съхраняват обектите, има място, където се създават низовете, създадени чрез задаване в кода на литералите. Можете да запазите няколко връзки на ред за по-бърза работа и запаметяване на паметта, ако техните стойности са еднакви. Има специални класове за прилагане на String променливи - StringBuilder и StringBuffer. И двамата са практически еднакви, но втората е с нишка.

Методи на класа String

Zнизовете могат да се изпълняват с различни методи. Те ви позволяват да направите следното:
  • сравнете дължините на Java линиите;
  • извлича струнни подстрани;
  • получават знак по индекс или индекс на символи;
  • провери линията за празнота;
  • да се определи дължината на един ред;
  • преобразува низ в масив;
  • промяна на регистъра;
  • свържете шнура;
  • да разчупи низ в масив;
  • първо и накрая да се изтрият празни символи;
  • заменете поднищата.
  • Преди да премахне метода на компенсиране и броене, премахването на низовия подстрока е малко по-различно, отколкото в новата версия. Той създаде само нова обвивка за обекта String, докато масивът оставаше стар. Възможно е да се замени част от линията, но имаше връзка към предишната версия. Това доведе до изтичане на паметта. Този проблем може да се избегне само с помощта на дублиран дизайнер. В новата версия на Java низът съхранява само данните, които съдържа.

    Сравнение на две линии на Java

    Разгледайте един от методите по-внимателно. Особено се използва специално действие на езика на Java - сравнението на низове. За тази цел в класа String има два варианта на метода compareTo (). Методът compareTo (String anotherString) се използва за сравняване на низове на обекта Java String с аргумента String, който се получава и ги сравнява лексикално. Той връща int със стойност -1 за "less", 0 за равенство или 1 за "more". Този метод е полезен за сортиране на алгоритми. Подобен метод за сравняване на низове в Java е Equals (). Използва логически стойностиравенство, а когато обектите са еквивалентни, връща true. Ако първата опция се използва за сортиране, втората е необходима за определяне на равенството. Друга възможност за сравняване на Java низове е методът compareToIgnoreCase (String str). Той е подобен на предишния, но игнорира случая със знаци.

    Свързани публикации