JavaRush /Java Blog /Random-IT /Classe String in Java

Classe String in Java

Pubblicato nel gruppo Random-IT
La classe String in Java è progettata per funzionare con le stringhe in Java. Tutti i valori letterali stringa definiti in un programma Java (ad esempio, "abc") sono istanze della classe String. Vediamo le sue caratteristiche principali:
  1. La classe implementa le interfacce Serializablee CharSequence. Poiché è incluso nel pacchetto java.lang, non è necessario importarlo.
  2. La classe String in Java è una classe finale e non può avere figli.
  3. La classe String è una classe immutabile, il che significa che i suoi oggetti non possono essere modificati dopo la loro creazione. Qualsiasi operazione su un oggetto String che risulterebbe in un oggetto della classe String comporterà la creazione di un nuovo oggetto.
  4. A causa della loro immutabilità, gli oggetti della classe String sono thread-safe e possono essere utilizzati in un ambiente multi-thread.
  5. Ogni oggetto in Java può essere convertito in una stringa attraverso un metodo toStringche tutte le classi Java ereditano dalla classe Object.
Classe String in Java - 1

Lavorare con Java String

Questa è una delle classi più comunemente utilizzate in Java. Dispone di metodi per analizzare determinati caratteri in una stringa, per confrontare e cercare stringhe, estrarre sottostringhe, creare una copia di una stringa con tutti i caratteri convertiti in maiuscolo e minuscolo e altri. Un elenco di tutti i metodi della classe String può essere trovato nella documentazione ufficiale . Java implementa anche un semplice meccanismo per la concatenazione (connessione di stringhe), convertendo le primitive in una stringa e viceversa. Diamo un'occhiata ad alcuni esempi di lavoro con la classe String in Java.

Creazione di stringhe

Il modo più semplice per creare un'istanza della classe String è assegnarle il valore di una stringa letterale:

String s = "I love movies";
Tuttavia, la classe String ha molti costruttori che ti consentono di:
  • creare un oggetto contenente una stringa vuota
  • creare una copia di una variabile stringa
  • creare una stringa basata su un array di caratteri
  • creare una stringa basata su un array di byte (tenendo conto delle codifiche)
  • eccetera.

Aggiunta di stringhe

Aggiungere due stringhe in Java è abbastanza semplice utilizzando l'estensione +. Java ti consente di aggiungere tra loro variabili e valori letterali stringa:

public static void main(String[] args) {
    String day = "Day";
    String and = "And";
    String night = "Night";
        
    String dayAndNight = day + " " + and + " " + night;
}
Aggiungendo oggetti della classe String con oggetti di altre classi, riduciamo queste ultime alla forma di stringa. La conversione di oggetti di altre classi in una rappresentazione di stringa viene eseguita tramite una chiamata implicita al metodo toStringsull'oggetto. Dimostriamolo con il seguente esempio:

public class StringExamples {
    public static void main(String[] args) {
        Human max = new Human("Max");
        String out = "java object: " + max;
        System.out.println(out);
        // Output: Java object: Person named Max
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

Confronto di stringhe

Per confrontare le stringhe, è possibile utilizzare il metodo equals():

public static void main(String[] args) {
    String x = "Test String";
    System.out.println("Test String".equals(x)); // true
}
Quando il caso non è importante per noi quando confrontiamo le stringhe, dobbiamo usare il metodo equalsIgnoreCase():

public static void main(String[] args) {
       String x = "Test String";
       System.out.println("test string".equalsIgnoreCase(x)); // true
}

Conversione di un oggetto/primitiva in una stringa

Per convertire un'istanza di qualsiasi classe Java o qualsiasi tipo di dati primitivo in una rappresentazione di stringa, è possibile utilizzare il metodo String.valueOf():

public class StringExamples {
    public static void main(String[] args) {
        String a = String.valueOf(1);
        String b = String.valueOf(12.0D);
        String c = String.valueOf(123.4F);
        String d = String.valueOf(123456L);
        String s = String.valueOf(true);
        String human = String.valueOf(new Human("Alex"));

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(s);
        System.out.println(human);
        /*
        Output:
        1
        12.0
        123.4
        123456
        true
        Person named Alex
         */
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

Conversione di una stringa in un numero

Spesso è necessario convertire una stringa in un numero. Le classi wrapper di tipo primitivo hanno metodi che servono esattamente a questo scopo. Tutti questi metodi iniziano con la parola parse. Considera la traduzione di una stringa in numeri interi ( Integer) e frazionari ( Double) di seguito:


public static void main(String[] args) {
    Integer i = Integer.parseInt("12");
    Double d = Double.parseDouble("12.65D");

    System.out.println(i); // 12
    System.out.println(d); // 12.65
}

Conversione di una raccolta di stringhe in una rappresentazione di stringa

Se è necessario convertire tutti gli elementi di una raccolta di stringhe in una rappresentazione di stringa tramite un delimitatore arbitrario, è possibile utilizzare i seguenti metodi della classe Java String:
  • join(CharSequence delimiter, CharSequence... elements)
  • join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
Dov'è delimiteril separatore dell'elemento ed elementsè un'istanza di array di stringhe/raccolta di stringhe. Diamo un'occhiata a un esempio in cui convertiamo un elenco di stringhe in una stringa, separandole ciascuna con un punto e virgola:

public static void main(String[] args) {
    List<String> people = Arrays.asList(
            "Philip J. Fry",
            "Turanga Leela",
            "Bender Bending Rodriguez",
            "Hubert Farnsworth",
            "Hermes Conrad",
            "John D. Zoidberg",
            "Amy Wong"
    );

    String peopleString = String.join("; ", people);
    System.out.println(peopleString);
    /*
    Output: 
    Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
     */
}

Suddivisione di una stringa in un array di stringhe

Questa operazione viene eseguita dal metodo split(String regex) Il separatore è un'espressione regolare di tipo stringa regex. Nell'esempio seguente, eseguiremo l'operazione opposta a quella eseguita nell'esempio precedente:

public static void main(String[] args) {
    String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";

    String[] peopleArray = people.split("; ");
    for (String human : peopleArray) {
        System.out.println(human);
    }
    /*
    Output: 
    Philip J. Fry
    Turanga Leela
    Bender Bending Rodriguez
    Hubert Farnsworth
    Hermes Conrad
    John D. Zoidberg
    Amy Wong
     */
}

Determinazione della posizione di un elemento in una linea

Nel linguaggio Java, String fornisce un insieme di metodi per determinare la posizione di un carattere/sottostringa in una stringa:
  1. indexOf(int ch)
  2. indexOf(int ch, int fromIndex)
  3. indexOf(String str)
  4. indexOf(String str, int fromIndex)
  5. lastIndexOf(int ch)
  6. lastIndexOf(int ch, int fromIndex)
  7. lastIndexOf(String str)
  8. lastIndexOf(String str, int fromIndex)
Dove:
  1. ch— il simbolo che stai cercando ( char)
  2. str- stringa di ricerca
  3. fromIndex— la posizione da cui cercare l'elemento
  4. metodi indexOf: restituiscono la posizione del primo elemento trovato
  5. metodi lastIndexOf: restituiscono la posizione dell'ultimo elemento trovato
Se l'elemento che stai cercando non viene trovato, i metodi restituiranno la riga -1. Proviamo a trovare il numero seriale delle lettere A, K, Z, Яnell'alfabeto inglese, ma teniamo presente che l'indicizzazione dei caratteri in una stringa in Java parte da zero:

public static void main(String[] args) {
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    System.out.println(alphabet.indexOf('A')); // 0
    System.out.println(alphabet.indexOf('K')); // 10
    System.out.println(alphabet.indexOf('Z')); // 25
    System.out.println(alphabet.indexOf('Я')); // -1
}

Estrazione di una sottostringa da una stringa

Per estrarre una sottostringa da una stringa, la classe String in Java fornisce i metodi:
  • substring(int beginIndex)
  • substring(int beginIndex, int endIndex)
Diamo un'occhiata a come possiamo utilizzare i metodi di posizionamento degli elementi e di estrazione delle sottostringhe per ottenere il nome del file dal suo percorso:

public static void main(String[] args) {
    String filePath = "D:\\Movies\\Futurama.mp4";
    int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
    String fileName = filePath.substring(lastFileSeparatorIndex + 1);
    System.out.println(fileName); //9
}

Converti la stringa in maiuscolo/minuscolo:

La classe String fornisce metodi per convertire una stringa in maiuscolo e minuscolo:
  • toLowerCase()
  • toUpperCase()
Diamo un'occhiata a come funzionano questi metodi utilizzando un esempio:

public static void main(String[] args) {
    String fry = "Philip J. Fry";

    String lowerCaseFry = fry.toLowerCase();
    String upperCaseFry = fry.toUpperCase();

    System.out.println(lowerCaseFry); // philip j. fry
    System.out.println(upperCaseFry); // PHILIP J. FRY
}
Il lavoro con questa classe Java viene studiato ai livelli iniziali del corso online JavaRush:

Fonti aggiuntive

Le informazioni sulla classe String sono fornite anche in altri articoli nella comunità JavaRush:
  1. Stringhe in Java : questo articolo illustra alcune nozioni di base sull'utilizzo delle stringhe in Java.
  2. Stringa Java. Domande e risposte all'intervista, parte 1 : questo articolo discute le domande dell'intervista sull'argomento Stringe fornisce anche risposte alle domande con spiegazioni ed esempi di codice.
  3. Stringhe in Java (classe java.lang.String) : questo articolo fornisce un'analisi più approfondita della classe String e discute anche le complessità del lavoro con questa classe.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION