Co musisz wiedzieć o używaniu ciągów w Javie

Co musisz wiedzieć o używaniu ciągów w Javie

Gdy zaczniesz uczyć się Javy, klasa String przyciągnie Twoją uwagę dzięki swoim unikalnym właściwościom.





Możesz tworzyć i manipulować łańcuchami w Javie łatwiej niż w innych językach. Dzieje się tak, ponieważ klasa String oferuje różne funkcje.





W oparciu o te funkcje istnieje kilka metod generowania i edytowania ciągów w zależności od Twoich preferencji i potrzeb. Podobnie wiele będzie zależeć od Twojej aplikacji i tego, gdzie należy użyć ciągów.





Czym różnią się ciągi Java?

Jeśli wcześniej pracowałeś z językiem C, wiesz, że łańcuchy w C są tablicą znaki (postacie). Z drugiej strony ciągi Java są niezmienne i zawierają znaki Unicode.

iPhone to akcesorium może nie być obsługiwane

Jedną z kluczowych cech, które sprawiają, że łańcuchy w Javie są unikatowe, jest konkatenacja. Wystarczy użyć operatora dodawania +, aby połączyć dwa lub więcej ciągów. To jest coś, czego nie można zrobić z innymi obiektami Java, takimi jak Punkt lub Koło .



Ponadto, jak wspomniano wcześniej, ciągi Java są niezmienne, tj. nie można ich modyfikować. Na przykład metody takie jak do wielkich liter() oraz do małych liter() wygeneruje zupełnie nowy ciąg, zamiast wprowadzać zmiany w istniejącej zawartości ciągu. Teraz twój kod zwróci ten nowo wygenerowany ciąg.

Powiązane: Jak manipulować tekstem w PHP za pomocą tych funkcji





Innym obszarem, w którym ciągi są różne, jest użycie znaków null do zakończenia ciągów w językach takich jak C. W Javie ciągi to obiekty obsługiwane przez tablice znaków. Jeśli chcesz odczytać zawartość ciągu w sposób, w jaki reprezentują je tablice znaków, użyj toCharArray() metoda wykona zadanie.

Porównywanie ciągów w Javie jest również wygodniejsze niż w innych językach programowania. Zamiast pisać długi blok kodu do porównywania ciągów znaków, możesz użyć równa się() metoda porównywania dwóch lub więcej ciągów znaków używanych w dowolnym programie. Dzieje się tak głównie dlatego, że w Javie równa się Metoda jest zastępowana przez klasę String, co sprawia, że ​​porównywanie ciągów to bułka z masłem.





Podobnie, wyszukiwanie w podciągach w Javie również jest bezproblemowe. Podczas używania wyrażeń regularnych lub metody takie jak ostatniIndeks() oraz indeks(), możesz przeszukiwać segmenty ciągów i zwracać wartości po zidentyfikowaniu dopasowania. Możesz także używać wyrażeń regularnych do przycinania i dzielenia różnych ciągów i używania ich indywidualnie do szerokiego zakresu zastosowań w dowolnym programie.

Jak struny są przechowywane w pamięci?

Teraz, gdy już wiesz, co sprawia, że ​​łańcuchy w Javie są inne i korzystne, przyjrzyjmy się klasie String. Jeśli wiesz coś na temat zarządzania pamięcią w Javie, musisz mieć do czynienia z jej dwoma kluczowymi jednostkami: stertą i stosem.

Stos służy do wykonywania procesów i operacji po wywołaniu przez program w języku Java, podczas gdy sterta przechowuje zawartość – potrzebną do efektywnego uruchamiania i wykonywania kodu. Jak więc zarządzanie pamięcią ma znaczenie w przypadku łańcuchów?

Dzieje się tak, ponieważ klasa String i literały łańcuchowe w Javie są traktowane inaczej. Wskazuje to, że literały ciągów mają przypisane unikatowe miejsce do przechowywania w pamięci sterty, określane jako pula stałych ciągów. Dlatego zawsze, gdy używasz literałów ciągów do tworzenia obiektów ciągów w Javie, pula stałych ciągów przechowuje je.

Wręcz przeciwnie, gdy używasz Nowy słowa kluczowego do tworzenia obiektów łańcuchowych, Java potraktuje je tak jak każdy inny obiekt i wyśle ​​je na stertę w celu przechowywania.

Przykład literałów napisowych

Teraz, gdy wiesz już wystarczająco dużo o obiektach łańcuchowych, przyjrzyjmy się przykładowi literałów łańcuchowych:


public class muostrings {
public static void main(String args[])
{
String himuo = 'Hello World from MUO';
System. out .println (himuo);
}
}

Tutaj literał ciągu utworzył obiekt String z zawartością Hello World z MUO. Java wyśle ​​ten obiekt do puli stałych ciągów.

Korzystanie z nowego słowa kluczowego

Możesz także użyć Nowy słowo kluczowe do generowania obiektów String.

Obiekt napisowy napisu himuo z zawartością Hello World z MUO został wygenerowany przez literał napisowy i zostanie wysłany do puli stałych napisów. Podobnie obiekty tekstowe można również tworzyć za pomocą słowa kluczowego new w następujący sposób:


public class muostringsobj {
public static void main(String args[]) {
char [] strArr = { 'M', 'O', 'U'};
String jStr = new String(strArr);
System. out .println( jStr );
}
}

Powyższy przykład wykorzystuje Nowy słowo kluczowe, aby utworzyć obiekt ciągu. Jak wyjaśniono wcześniej, są one wysyłane na stertę, gdzie są przechowywane wraz z innymi zmiennymi i obiektami oczekującymi na wykonanie przez program.

Do tej pory musisz być ciekawy, jaka jest pula stałych ciągów, i słusznie. Przydziela przestrzeń puli do obiektów na podstawie zawartości obiektu tekstowego. Gdy String Constant Pool otrzyma obiekty, sprawdza je, aby zweryfikować, czy dwa obiekty zawierają dokładnie tę samą zawartość.

Czy dwa obiekty łańcuchowe mogą przechowywać tę samą zawartość?

Gdy do utworzenia nowego obiektu używany jest literał ciągu, wirtualna maszyna języka Java (JVM) przegląda zawartość obiektu i ocenia, czy już istnieje w puli. Gdy obiekt zawiera zawartość, która jest już obecna w puli, odwołanie do obiektu jest zwracane bez tworzenia nowego obiektu. Jeśli musisz stworzyć nowy obiekt, musisz upewnić się, że treść jest odrębna i niepowtarzalna.

Jeśli jednak użyjesz Nowy słowa kluczowego, aby utworzyć nowy ciąg, zostanie on przetworzony inaczej. Kiedy używasz Nowy słowa kluczowego, aby utworzyć nowy ciąg, zostanie on wygenerowany, niezależnie od tego, czy zawiera taką samą zawartość, jak istniejący ciąg.

Wskazuje to, że dwa istniejące ciągi obiektów przechowywane w pamięci sterty mogą wiązać się z tą samą zawartością; różni się to od obiektów ciągów przechowywanych w puli stałych ciągów. Możesz to również udowodnić za pomocą operatora ==; zwraca prawdę, jeśli porównuje się dwa obiekty o tym samym adresie fizycznym.


public class comparingStrngs {
public static void main(String[] args)
{
String firstLiteral = 'muo1';
String secondLiteral = 'muo1';
System. out .println(firstLiteral == secondLiteral);
String firstKeyword = new String('muo2');
String secondKeyword = new String('muo2');
System. out .println(firstKeyword == secondKeyword);
}
}

Teraz możesz łatwo zrozumieć ciągi znaków w Javie

W tym artykule poznałeś różnice między łańcuchami w Javie, sposoby używania łańcuchów w Javie, zarządzanie pamięcią łańcuchów w Javie i inne ważne szczegóły dotyczące działania łańcuchów. Aby sprawdzić, czy rozumiesz, dlaczego nie napisać programu w języku Java, który połączy dwa ciągi znaków?

Udział Udział Ćwierkać E-mail Uczysz się Pythona? Oto jak manipulować strunami

Używanie i manipulowanie łańcuchami w Pythonie może wydawać się trudne, ale jest zwodniczo proste.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Jawa
O autorze Usman Ghani(4 opublikowane artykuły)

Usman jest sprzedawcą treści, który pomógł kilku firmom w organicznym rozwoju na platformach cyfrowych. Lubi zarówno programowanie, jak i pisanie, co oznacza, że ​​bardzo lubi pisanie techniczne. Kiedy nie pracuje, Usman lubi spędzać czas oglądając programy telewizyjne, śledząc krykieta i czytając o analizie danych.

Więcej od Usmana Ghaniego

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować