CodeGym /Blog Java /Random-PL /Ciągi Javy
John Squirrels
Poziom 41
San Francisco

Ciągi Javy

Opublikowano w grupie Random-PL

Co to jest ciąg w Javie?

W programowaniu bardzo często używane są ciągi znaków. String w Javie to obiekt reprezentujący sekwencję znaków popartą tablicą char. Klasa String jest niezmienna w Javie i implementuje interfejsy Comparable , Serializable i CharSequence . Spójrzmy na przykład, aby zrozumieć.
String str = "string"
Tutaj str jest sekwencją 6 znaków, którymi są s, t, r, i, n i g.
Indeks tablicy znaków 0 1 2 3 4 5
Wartość S T R I N G
Adres pamięci 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
Jak już wiemy, tablica jest niezmienna, co oznacza, że ​​nie można jej zmienić po inicjalizacji, zatem ciąg znaków również jest niezmienny.

Sposoby inicjalizacji łańcucha

Istnieją dwa sposoby inicjowania ciągu.
  1. Literały łańcuchowe
  2. Nowy operator

Dosłowny ciąg

Najłatwiejszy i najbardziej bezpośredni sposób zadeklarowania ciągu znaków został zastosowany w powyższym przykładzie. Ilekroć kompilator interpretuje literał łańcuchowy, jest on zawsze konwertowany na obiekt String.
String str = "string";

Nowy operator

Możemy także zainicjować ciąg używając operatora new.
String strNew = new String("using new operator");

Przykład

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

Wyjście

String str = literał łańcuchowy String strNew = użycie operatora new

String vs StringBuilder vs StringBuffer

Omówiliśmy już, czym jest klasa String, więc omówimy pozostałe dwie klasy i ich przeznaczenie, a także powód, dla którego Java wprowadziła te dwie klasy, skoro ma już dla nas klasę String. Lepiej będzie, jeśli pójdziesz na górę i przejrzysz klasę String, aby lepiej ją zrozumieć.

Powód

Jak wiemy, obiekt klasy String jest niezmienny, więc ilekroć musimy zmienić ciąg, nigdy nie powoduje to mutacji bieżącego obiektu, ale zmieniona wartość jest zawsze przechowywana jako nowy obiekt String. Jeśli więc będziemy musieli wielokrotnie zmieniać wartość, pamięć również zostanie zużyta. Trzymając się tego punktu, Java udostępniła nam klasy StringBuilder i StringBuffer . Teraz zobaczymy, jak są one przydatne w tym scenariuszu.

Bufor ciągów

String jest reprezentacją niezmiennej sekwencji znaków, ale StringBuffer jest zmienną sekwencją znaków . Wykorzystuje większość metod klasy String wraz z kilkoma własnymi do zmiany zawartości i sekwencji znaków. Jest bezpieczny dla wątków , ponieważ jego metody są zsynchronizowane do użytku przez wiele wątków, zachowując kolejność szeregową. Implementuje interfejsy Serializable , Appendable i CharSequence .

Składnia

StringBuffer str = new StringBuffer("Happy Java Programming");

Konstruktor ciągów

StringBuilder reprezentuje również zmienną sekwencję znaków. Zapewnia interfejs API, który jest kompatybilny z klasą StringBuffer, ale nie jest bezpieczny dla wątków. Zatem tam, gdzie nie jest zaangażowanych wiele wątków, lepiej jest skorzystać z klasy StringBuilder , ponieważ w wielu przypadkach jest ona szybsza niż klasa StringBuffer . Kluczowymi metodami tej klasy są metoda wstawiania i dołączania. Implementuje także interfejsy Serializable , Appendable i CharSequence .

Składnia

StringBuilder str = new StringBuilder("Happy Java Programming");

Operacje na ciągach

W Javie możemy wykonywać operacje na ciągach, takie jak łączenie , porównywanie , dzielenie , znajdowanie długości , zastępowanie ciągów i tak dalej.

Metody ciągów

Klasa Java String udostępnia różne metody manipulowania ciągami znaków lub wykonywania omówionych powyżej operacji. Przyjrzyjmy się poniższej tabeli, aby zapoznać się z niektórymi metodami łańcuchowymi.
Metody Opis
Char charAt(int indeks) Zwraca wartość char o podanym indeksie.
Połączenie ciągu (String str) Zwraca ciąg, łącząc określony ciąg na końcu tego ciągu.
wartość logiczna zawiera (CharSequence s) Zwraca wartość true, jeśli ciąg zawiera określoną sekwencję wartości znaków.
zawartość logicznaEquals(CharSequence cs) Dopasowuje ciąg znaków do podanej sekwencji znaków.
zawartość logicznaEquals(StringBuffer sb) Dopasowuje ciąg do dostarczonego bufora ciągu.
wartość logiczna kończy się z (przyrostkiem ciągu) Porównuje koniec łańcucha z podanym przyrostkiem.
wartość logiczna równa się (obiekt i obiekt) Dopasowuje ciąg do podanego obiektu.
wartość logiczna równaIgnoreCase(String innyString) Ta metoda porównuje dwa ciągi bez uwzględniania wielkości liter.
statyczny format ciągu (format ciągu, obiekt… argumenty) Zwraca sformatowany ciąg znaków, używając podanego formatu i argumentów.
bajt getBytes() Ta metoda wykorzystuje domyślny zestaw znaków platformy do kodowania ciągu znaków w sekwencji bajtów, który jest następnie zapisywany w nowej tablicy bajtów.
void getChars(int Begin, int end, char[] dst, int dstBegin) Kopiuje znaki z ciągu do docelowej tablicy znaków.
int kod hash() Zwraca kod skrótu dla ciągu.
int indeksOf(int ch) Zwraca indeks dla określonego znaku, który występuje jako pierwszy w ciągu.
int indeksOf(int ch, int fromIndex) Zwraca indeks dla określonego znaku, który występuje jako pierwszy, zaczynając od podanego indeksu w tym ciągu.
int indeksOf(String str) Wyszukuje podany podciąg w ciągu i zwraca indeks przy pierwszym wystąpieniu.
int indeksOf(String str, int zindeksu) Rozpoczyna wyszukiwanie podanego podciągu w ciągu znaków o podanym indeksie i zwraca indeks przy pierwszym wystąpieniu.
Ciąg stażysta() Ta metoda zwraca kanoniczną reprezentację ciągu.
int lastIndexOf(int ch) Ta metoda wyszukuje podany znak w ciągu i zwraca indeks ostatniego wystąpienia.
int lastIndexOf(int ch, int fromIndex) Ta metoda wyszukuje wstecz od podanego indeksu podany znak w ciągu i zwraca indeks ostatniego wystąpienia.
int lastIndexOf(String str) Ta metoda wyszukuje podany podciąg w ciągu i zwraca indeks ostatniego wystąpienia.
int lastIndexOf(String str, int z indeksu) Ta metoda wyszukuje wstecz od podanego indeksu podany podciąg w ciągu i zwraca indeks ostatniego wystąpienia.
długość całkowita() Ta metoda zwraca długość ciągu.
dopasowania logiczne (wyrażenie regularne) Zwraca wartość true lub false, dopasowując ciąg znaków do podanego wyrażenia regularnego.
Zamień ciąg (znak stara wartość, char nowa wartość) Ta metoda zwraca ciąg znaków po zastąpieniu całej podanej wartości oldValue nową wartością w ciągu.
Rozdzielenie ciągu [] (wyrażenie regularne ciągu) Ta metoda znajduje wszystkie dopasowania zgodnie z podanym wyrażeniem regularnym w ciągu znaków i dzieli je wokół tych dopasowań.
wartość logiczna zaczyna się od (przedrostek ciągu) Zwraca wartość true lub false, testując początek łańcucha z podanym przedrostkiem.
Podciąg ciągu (int BeginIndex) Ta metoda zwraca ciąg znaków będący podciągiem tego ciągu.
Ciąg doLowerCase() Konwertuje wszystkie znaki ciągu na małe litery, korzystając z domyślnych ustawień regionalnych.
Przycinanie sznurka() Ta metoda usuwa wszystkie początkowe i końcowe spacje z ciągu i zwraca je.
statyczna wartość ciągu(znak c) Zwraca ciąg znaków reprezentujący argument char.
Teraz na podstawie kilku przykładów zobaczymy, jak z nich korzystać.

Przykład

import java.io.*;
import java.lang.*;

class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

Wyjście

Ciąg: Witam! Długość świata: 12 Pierwszy ciąg znaków: Java Drugi ciąg znaków: Programowanie Połączony ciąg: Programowanie w języku Java Ciągi jpf i jps są równe: true Ciągi jpf i jpt są równe: false Wielkie litery jpf: JAVA PROGRAMMING Zastępowanie g przez v w jpf: Java provramminv

Wniosek

Mamy nadzieję, że już rozumiesz, czym są ciągi znaków w Javie, jakie są ich klasy i jak implementować różne metody. Możesz ćwiczyć i wrócić, gdy będziesz potrzebować dodatkowej pomocy. Miłej nauki!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION