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:
- La classe implementa le interfacce
Serializable
eCharSequence
. Poiché è incluso nel pacchettojava.lang
, non è necessario importarlo. - La classe String in Java è una classe finale e non può avere figli.
- 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.
- A causa della loro immutabilità, gli oggetti della classe String sono thread-safe e possono essere utilizzati in un ambiente multi-thread.
- Ogni oggetto in Java può essere convertito in una stringa attraverso un metodo
toString
che tutte le classi Java ereditano dalla classeObject
.
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 toString
sull'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 metodoequals()
:
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 metodoString.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)
delimiter
il 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 metodosplit(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:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— il simbolo che stai cercando (char
)str
- stringa di ricercafromIndex
— la posizione da cui cercare l'elemento- metodi
indexOf
: restituiscono la posizione del primo elemento trovato - metodi
lastIndexOf
: restituiscono la posizione dell'ultimo elemento trovato
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)
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()
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:
- Un'introduzione a String viene fornita al livello 1, lezione 4 della ricerca sulla sintassi Java
- La struttura interna di String, il metodo delle sottostringhe vengono studiati al 2° livello, 3° lezione del Java Multithreading quest
- Trovare, ottenere, eliminare una sottostringa in una stringa viene studiato al 2° livello, 4a lezione della ricerca Java Multithreading
- Il metodo String.format è trattato al livello 2, lezione 6 della ricerca Java Multithreading
Fonti aggiuntive
Le informazioni sulla classe String sono fornite anche in altri articoli nella comunità JavaRush:- Stringhe in Java : questo articolo illustra alcune nozioni di base sull'utilizzo delle stringhe in Java.
- Stringa Java. Domande e risposte all'intervista, parte 1 : questo articolo discute le domande dell'intervista sull'argomento
String
e fornisce anche risposte alle domande con spiegazioni ed esempi di codice. - 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.
GO TO FULL VERSION