"Ciao, Amico!"

"Ma, Bilaabo, mi hai già salutato."

"Davvero? Beh, mi piace ancora iniziare ogni lezione con quella frase."

"Oggi studieremo in profondità la classe String."

"Ma so già tutto al riguardo. So anche che la classe String è immutabile."

"La classe String ha 46 metodi. Quanti ne conosci?"

"Non più di dieci. In realtà, probabilmente circa 5 al massimo."

"Allora ascolta."

"I creatori di Java hanno notato che la maggior parte delle stringhe nei programmi non sono pensate per essere modificate, ma a volte vengono comunque modificate. È molto fastidioso quando crei una stringa, salvi qualcosa di importante in essa, la passi al metodo di qualcun altro e viene modificata Per evitare che ciò accada, hanno deciso di creare stringhe sia mutabili che immutabili."

"La classe String è per le stringhe immutabili e la classe StringBuilder è per quelle mutabili. Gli oggetti di queste classi sono facilmente convertiti nell'altro tipo. Nella maggior parte dei casi, gli sviluppatori Java hanno semplicemente bisogno di String, il che dimostra che i creatori di Java avevano ragione."

"Quindi, se ho bisogno di una stringa, uso la classe String. E se ho bisogno di una stringa mutabile, allora uso la classe StringBuilder ?"

"Sì. In realtà, esiste un'altra classe chiamata StringBuffer. È una copia di StringBuilder, tranne per il fatto che tutti i suoi metodi sono dichiarati sincronizzati , in modo che sia possibile accedere all'oggetto da diversi thread del programma."

"E che dire di questo esempio? La stringa non viene cambiata qui?"

String s = "cat";
s = s + "-" + s;

"No. Qui ci sono due oggetti String: «gatto» e «gatto-gatto». Il secondo viene creato utilizzando il primo, ma il primo oggetto non cambia. In realtà qui le cose sono molto più interessanti. Ecco il codice il compilatore genera quando compila il tuo esempio:"

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

"Quindi, StringBuilder è quasi sempre usato per creare nuove stringhe, ma a volte il compilatore fa semplicemente tutto il lavoro per te. Ma la tua versione è più semplice, non credi?"

"Sì, è fantastico che Java abbia un compilatore così avanzato."

"Bene, ora esaminiamo i metodi della classe String:"

1) Come trovo la lunghezza di una stringa?

"Il metodo length restituisce la lunghezza di una stringa (il numero di caratteri in essa contenuti)."

Metodo(i) Esempi
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Come ottengo un carattere da una stringa?

"Il metodo charAt restituisce un carattere da una stringa in base al suo indice. Gli indici dei caratteri iniziano da 0.

Metodo(i) Esempi
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Come posso ottenere caratteri da una stringa?

Come posso ottenere caratteri da una stringa?

Metodo(i) Esempi
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Come posso confrontare le stringhe?

"Il metodo equals controlla se le stringhe corrispondono e il metodo equalsIgnoreCase controlla se le stringhe corrispondono quando le maiuscole e minuscole vengono ignorate.

Metodo(i) Metodo(i)
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) Come faccio a rendere tutte le lettere in una stringa maiuscole o minuscole?

"Il metodo toUpperCase restituisce una copia della stringa con tutte le lettere maiuscole."

"Il metodo toLowerCase restituisce una copia della stringa con tutte le lettere minuscole."

Metodo(i) Esempi
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Risultato:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Risultato:

s == "good news, everyone!";

6) Come rimuovo gli spazi all'inizio e alla fine di una stringa?

"Il metodo trim restituisce una copia di una stringa senza spazi bianchi all'inizio e alla fine."

Metodo(i) Esempi
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Risultato:

s == "Good news, everyone!";