1. Struttura della Stringclasse

Oggi parleremo della Stringclasse. Dopo ints, la classe String è la classe più popolare in Java. È usato assolutamente ovunque. Ha un sacco di metodi utili che è meglio conoscere.

La Stringclasse è l'unica classe diversa dai tipi primitivi i cui valori letterali possono essere usati in un'istruzione switch; il compilatore gestisce l'aggiunta di stringhe e gli oggetti String in modo speciale; Stringgli oggetti sono narrati nella memoria in un modo speciale. Fondamentalmente, la Stringclasse è una classe molto speciale.

Inoltre, la Stringclasse ha una serie di classi helper il cui scopo è semplificare ulteriormente il lavoro con le stringhe in Java. Quando imparerai tutto questo, molte cose diventeranno davvero molto più facili da fare per te. Bene, inizieremo proprio dal nucleo di questo ecosistema: l'organizzazione della Stringclasse.

Matrice di personaggi

La struttura della Stringclasse è in realtà molto semplice: al suo interno è presente un array di caratteri (char array) che memorizza tutti i caratteri della stringa. Ad esempio, ecco come viene memorizzata la parola "Ciao":

Struttura della classe String
Importante!

In realtà, questo non è del tutto esatto. Poiché la Stringclasse è molto importante, utilizza molte ottimizzazioni e i dati vengono archiviati internamente non come array di caratteri, ma semplicemente come array di byte.


2. Metodi della Stringclasse

La Stringclasse ha molti metodi: ha solo 18 costruttori! Quindi di seguito menzioniamo solo i più basilari:

Metodi Descrizione
int length()
Restituisce il numero di caratteri nella stringa
boolean isEmpty()
Controlla se la stringa è una stringa vuota
boolean isBlank()
Verifica che la stringa contenga solo spazi bianchi: spazio, tabulazione, nuova riga, ecc.
char charAt(int index)
Restituisce il carattere nella posizione di indice nella stringa.
char[] toCharArray()
Restituisce un array dei caratteri (una copia) che compongono la stringa
byte[] getBytes()
Converte una stringa in un set di byte e restituisce la matrice di byte.
String[] split(String regex)
Divide una stringa in più sottostringhe.
String join(CharSequence delimiter, elements)
Unisce più sottostringhe insieme
String intern()
Inserisce una stringa nel file string pool.

Puoi saperne di più sui costruttori nell'articolo Costruttori Java .

Scriviamo un programma che converte il percorso di un file dallo stile Unix allo stile Windows. Unix usa il /carattere per separare le cartelle, mentre Windows usa il \carattere.

Soluzione 1: utilizzo di un array di caratteri

Codice Appunti
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Creare un oggetto Scanner
Leggere una riga dalla console

Convertire una stringa in un array di caratteri
Passare sui caratteri
Se il carattere è /,
sostituirlo con \. Non dimenticare di scappare.

Crea una nuova stringa basata sull'array di caratteri.
Visualizza la stringa.

Soluzione 2: — utilizzando i metodi split()ejoin()

Codice Appunti
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
Creare un oggetto Scanner
Leggere una riga dalla console

Convertire string in un array di stringhe . Il /carattere viene utilizzato come separatore (le due barre in più sono il risultato di un doppio escape).
Concatenare tutte le stringhe nell'array di stringhe . Il \è usato come separatore (lo vediamo sfuggito).

Visualizza la stringa.

Soluzione 3: — utilizzando il replace(char oldChar, char newChar)metodo

Codice Appunti
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Crea un oggetto Scanner
Leggi una riga dalla console

Sostituisci semplicemente un carattere con un altro
(il secondo è sfuggito)
Visualizza la stringa.