Manipulacja strunami w Java z PRZYKŁADEM

⚡ Inteligentne podsumowanie

Manipulacja strunami w Java opiera się na klasie String, która reprezentuje tekst jako tablicę znaków i udostępnia wbudowane metody, takie jak length, indexOf, charAt, compareTo, contains, replace i konwersję wielkości liter, aby skutecznie przetwarzać i przekształcać tekst.

  • 🔤 Podstawy strun: A Java String jest tablicą znaków zarządzaną przez klasę String, która rozszerza klasę Object.
  • Powiązanie: Połącz ciągi znaków za pomocą metody concat() lub operatora +, aby uzyskać ten sam wynik.
  • 📏 Metody kontroli: Funkcje length(), indexOf() i charAt() zwracają rozmiar, indeks znaku i znak w danej pozycji.
  • 🔎 Porównanie i wyszukiwanie: compareTo(), compareToIgnoreCase() i contains() porównują ciągi znaków i sprawdzają sekwencje.
  • ✏️ Transformacja: replace(), toLowerCase() i toUpperCase() modyfikują zawartość ciągu i wielkość liter.
  • 🔒 Niezmienność: Ciągi znaków są ostateczne i niezmienne; JVM przechowuje je w puli stałych ciągów znaków.

Manipulacja strunami w Java

Czym są struny? Java?

Ciąg znaków w dosłownym znaczeniu to ciąg znaków. Hej, powiedziałeś znaki, czy nie jest to prymitywny typ danych Java. Tak, czyli pod względem technicznym, podstawowy Java String to w zasadzie tablica znaków.

Zatem mój powyższy ciąg „ROSE„można przedstawić następująco –

Java sznur

Dlaczego warto używać ciągów?

Jedną z podstawowych funkcji współczesnej informatyki jest przetwarzanie ludzkiego języka.

Podobnie jak liczby są ważne dla matematyki, symbole językowe są istotne dla zrozumienia i podejmowania decyzji. Chociaż mogą nie być widoczne dla użytkowników komputerów, komputery przetwarzają język w tle tak precyzyjnie i dokładnie, jak kalkulator. Okna dialogowe pomocy zawierają instrukcje. Menu umożliwiają dokonywanie wyborów. Wyświetlacze danych pokazują statusy, błędy i zmiany języka w czasie rzeczywistym.

Jako Java programiście, jednym z głównych narzędzi do przechowywania i przetwarzania języka będzie klasa String.

Przykłady składni ciągów

Teraz zajmijmy się składnią, w końcu musimy to zapisać w Java kod to nie to.

String to tablica znaków reprezentowana jako:

//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);

Z technicznego punktu widzenia ciąg znaków jest zdefiniowany w powyższym przykładzie w następujący sposób:

= new (argument);

Teraz nie zawsze możemy zapisać nasze łańcuchy jako tablice; stąd możemy zdefiniować String w Java w sposób następujący:

//Representation of String
String strSample_2 = "ROSE";

Z technicznego punktu widzenia powyższe jest reprezentowane jako:

= ;

Klasa ciągów Java rozciąga się dotychczasowy Klasa obiektu.

Łączenie ciągów:

Konkatenacja polega na łączeniu dwóch lub więcej ciągów znaków.

Spójrz na poniższy obrazek-

Przykłady składni ciągów

Mamy dwa ciągi str1 = „Rock” i str2 = „Gwiazda”

Jeśli dodamy te dwa ciągi, powinniśmy otrzymać wynik str3= „RockStar”.

Sprawdź poniższy fragment kodu, który wyjaśnia dwie metody łączenia ciągów znaków.

Pierwszym z nich jest użycie „konkat” metoda klasy String i druga używa arytmetycznego operatora „+”. Oba dają ten sam wynik

public class Sample_String{
  public static void main(String[] args){
//String Concatenation
String str1 = "Rock";
String str2 = "Star";
//Method 1 : Using concat
String str3 = str1.concat(str2);
System.out.println(str3);
//Method 2 : Using "+" operator
String str4 = str1 + str2;
System.out.println(str4);
}
}

Oczekiwany wynik:

RockStar
RockStar

Ważny Java metody ciągów:

Java metody łańcuchowe

Zapytajmy Java Zadaj klasie kilka pytań i zobacz, czy może na nie odpowiedzieć:

Metoda „długości” ciągu

Jak określisz długość danego Stringa? Udostępniłem metodę zwaną „length”. Użyj jej w Stringu, którego potrzebujesz, aby znaleźć długość.

public class Sample_String{
  public static void main(String[] args){  //Our sample string for this tutorial
  String str_Sample = "RockStar";
  //Length of a String
  System.out.println("Length of String: " + str_Sample.length());}}

Oczekiwany wynik:

Length of String: 8

Metoda ciągu „indexOf”.

Jeśli znam długość, jak dowiedzieć się, który znak znajduje się na której pozycji? Krótko mówiąc, jak znaleźć indeks znaku?

Sam sobie odpowiedziałeś, kolego, istnieje metoda „indexOf”, która pomoże Ci określić lokalizację konkretnego znaku, który określisz.

public class Sample_String{
  public static void main(String[] args){//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
//Index of a given character
System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));}}

Oczekiwany wynik:

Character at position 5: t
Index of character 'S': 4

Metoda ciągu „charAt”.

Podobnie jak w przypadku powyższego pytania, biorąc pod uwagę indeks, jak poznać postać w tym miejscu?

Znowu proste!! Użyj metody „charAt” i podaj indeks, którego znaku potrzebujesz.

public class Sample_String{
  public static void main(String[] args){//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));}}

Oczekiwany wynik:

Character at position 5: t

Metoda ciągu „CompareTo”.

Czy chcę sprawdzić, czy ciąg wygenerowany jakąś metodą jest równy temu, co chcę zweryfikować? Jak porównać dwa ciągi znaków?

Użyj metody „compareTo” i określ ciąg znaków, który chcesz porównać.

Użyj „compareToIgnoreCase”, jeśli nie chcesz, aby w wynikach uwzględniana była wielkość liter.

Wynik będzie miał wartość 0, jeśli ciąg argumentów jest równy temu ciągowi; wartość mniejsza niż 0, jeśli ten ciąg znaków jest leksykograficznie mniejszy niż argument ciągu; oraz wartość większą niż 0, jeśli ten ciąg znaków jest leksykograficznie większy niż argument ciągu.

public class Sample_String{
  public static void main(String[] args){//Compare to a String
String str_Sample = "RockStar";
  System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
  //Compare to - Ignore case
  System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));}}

Oczekiwany wynik:

Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0

Metoda „zawierania” ciągu

Częściowo wiem, co powinien zawierać ciąg znaków. Jak mogę sprawdzić, czy ciąg zawiera określoną przeze mnie sekwencję znaków?

Skorzystaj z metody „zawiera” i określ znaki, które chcesz sprawdzić.

Zwroty prawdziwy wtedy i tylko wtedy, gdy ten ciąg zawiera określoną sekwencję wartości znaków.

public class Sample_String{
  public static void main(String[] args){  //Check if String contains a sequence
String str_Sample = "RockStar";
  System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));}}

Oczekiwany wynik:

Contains sequence 'tar': true

Metoda ciągu „endsWith”.

Jak sprawdzić, czy ciąg znaków kończy się określonym sufiksem? Znowu odpowiedziałeś. Użyj metody „endsWith” i określ przyrostek w argumentach.

Zwroty prawdziwy jeśli sekwencja znaków reprezentowana przez argument jest przyrostkiem sekwencji znaków reprezentowanej przez ten obiekt.

public class Sample_String{
  public static void main(String[] args){  //Check if ends with a particular sequence
String str_Sample = "RockStar";
  System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));}}

Oczekiwany wynik:

EndsWith character 'r': true

Metoda ciągów „replaceAll” i „replaceFirst”.

Chcę zmodyfikować ciąg w kilku miejscach i zastąpić kilka części ciągu?

Java Metody String Zamień, zamieńWszystkie i zamieńFirst. Możesz określić część ciągu, którą chcesz zastąpić, oraz zastępujący ciąg znaków w argumentach.

public class Sample_String{
  public static void main(String[] args){//Replace Rock with the word Duke
String str_Sample = "RockStar";
System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));}}

Oczekiwany wynik:

Replace 'Rock' with 'Duke': DukeStar

sznur Java „małe litery” i Java Metoda „wielkiej litery”.

Chcę, aby cały mój ciąg był wyświetlany małymi lub wielkimi literami?

Po prostu użyj metod „toLowercase()” lub „ToUpperCase()” w stosunku do ciągów znaków, które wymagają konwersji.

public class Sample_String{
  public static void main(String[] args){//Convert to LowerCase
String str_Sample = "RockStar";
System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
//Convert to UpperCase
System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());}}

Oczekiwany wynik:

Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR

Ważne punkty do zapamiętania:

  • String jest klasą końcową; tzn. raz utworzonej wartości nie można zmienić. Zatem obiekty typu String nazywane są niezmiennymi.
  • Java Maszyna wirtualna (JVM) tworzy lokalizację pamięci specjalnie dla ciągów o nazwie Stała pula ciągów. Dlatego String można zainicjować bez słowa kluczowego „new”.
  • Klasa String należy do Hierarchia ciągów java.lang.String. Ale nie ma potrzeby importowania tej klasy. Java platforma udostępnia je automatycznie.
  • sznur odwołanie można zastąpić, ale nie powoduje to usunięcia treści; tj. jeśli

Ciąg h1 = „cześć”;

h1 = „cześć”+ „świat”;

wtedy ciąg znaków „cześć” nie zostanie usunięty. Po prostu traci chwyt.

  • Wiele referencji może być użyty dla tego samego ciągu, ale tak się stanie wystąpić w tym samym miejscu; tj. jeśli

Ciąg h1 = „cześć”;

Ciąg h2 = „cześć”;

Ciąg h3 = „cześć”;

wtedy w pamięci tworzona jest tylko jedna pula dla Stringa „hello” z 3 referencjami – h1, h2, h3

  • Jeśli numer jest podany w ” „ potem to staje się ciągiem, to już nie jest liczba. To znaczy, jeśli

String S1 =”Numer to: „+ „123”+”456″;

System.na zewnątrz.println(S1);

następnie wydrukuje: Numer to: 123456

Jeśli inicjalizacja wygląda następująco:

String S1 = „Numer to: „+(123+456);

System.out.println(S1);

następnie wydrukuje: Numer to: 579

To wszystko dla Strings!

FAQ

Java Ciągi znaków są niezmienne ze względów bezpieczeństwa, bezpieczeństwa wątków i wydajności. Ponieważ wartość nie może się zmienić po utworzeniu, JVM może bezpiecznie buforować ciągi znaków w puli stałych ciągów znaków i współdzielić referencje.

In Java, == porównuje referencje do obiektów, podczas gdy equals() porównuje rzeczywistą zawartość znaków dwóch ciągów znaków. Użyj equals(), aby sprawdzić, czy dwa ciągi znaków mają tę samą wartość.

String jest niezmienny, podczas gdy StringBuilder i StringBuffer są zmienne. StringBuffer jest bezpieczny dla wątków i zsynchronizowany; StringBuilder jest szybszy, ale nie jest bezpieczny dla wątków, przez co idealnie nadaje się do jednowątkowej manipulacji ciągami znaków.

Asystenci kodowania AI potrafią generować kod do obsługi ciągów znaków, proponować odpowiednie metody, objaśniać wyrażenia regularne i wykrywać błędy, takie jak błędy wskaźnika zerowego lub indeksu w operacjach na ciągach znaków.

Tak. Narzędzia AI potrafią pisać Java kod, który czyści, formatuje i przekształca tekst za pomocą metod takich jak zastępowanie, przycinanie i konwersja wielkości liter, a następnie wyjaśnia każdy krok uczniom.

Podsumuj ten post następująco: