"Olá, amigo!"

"Mas, Bilaabo, você já disse olá."

"Sério? Bem, eu ainda gosto de começar cada lição com essa frase."

"Hoje vamos estudar a fundo a classe String."

"Mas eu já sei tudo sobre isso. Sei até que a classe String é imutável."

"A classe String tem 46 métodos. Quantos deles você conhece?"

"Não mais do que dez. Na verdade, provavelmente cerca de 5 no máximo."

"Então escute."

"Os criadores de Java perceberam que a maioria das strings em programas não foi feita para ser modificada, mas às vezes elas são modificadas de qualquer maneira. É muito irritante quando você cria uma String, salva algo importante nela, passa para o método de outra pessoa e ela é alterada . Para evitar que isso aconteça, eles decidiram criar Strings mutáveis ​​e imutáveis."

"A classe String é para strings imutáveis ​​e a classe StringBuilder é para strings mutáveis. Os objetos dessas classes são facilmente convertidos para outro tipo. Na maioria dos casos, os desenvolvedores Java simplesmente precisam de String, o que prova que os criadores de Java estavam certos."

"Então, se eu precisar de uma String, eu uso a classe String. E se eu precisar de uma String mutável, eu uso a classe StringBuilder ?"

"Sim. Na verdade, existe uma outra classe chamada StringBuffer. É uma cópia do StringBuilder, exceto que todos os seus métodos são declarados como sincronizados , para que o objeto possa ser acessado a partir de diferentes threads do programa."

"E quanto a este exemplo? A string não é alterada aqui?"

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

"Não. Existem dois objetos String aqui: «cat» e «cat-cat». O segundo é criado usando o primeiro, mas o primeiro objeto não muda. Na realidade, as coisas são muito mais interessantes aqui. Aqui está o código o compilador gera quando compila seu exemplo:"

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

"Então, StringBuilder quase sempre é usado para criar novas Strings, mas às vezes o compilador simplesmente faz todo o trabalho para você. Mas sua versão é mais simples, não acha?"

"Sim, é incrível que Java tenha um compilador tão avançado."

"Bem, agora vamos percorrer os métodos da classe String:"

1) Como encontro o comprimento de uma String?

"O método length retorna o comprimento de uma String (o número de caracteres nela)."

Métodos) Exemplos)
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Como obtenho um caractere de uma String?

"O método charAt retorna um caractere de uma String por seu índice. Os índices dos caracteres começam em 0.

Métodos) Exemplos)
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Como obtenho caracteres de uma String?

Como obtenho caracteres de uma String?

Métodos) Exemplos)
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Como comparo Strings?

"O método equals verifica se as Strings correspondem e o método equalsIgnoreCase verifica se as Strings correspondem quando maiúsculas e minúsculas são ignoradas.

Métodos) Métodos)
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) Como eu coloco todas as letras de uma String em maiúsculas ou minúsculas?

"O método toUpperCase retorna uma cópia da String com todas as letras maiúsculas."

"O método toLowerCase retorna uma cópia da String com todas as letras minúsculas."

Métodos) Exemplos)
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Resultado:

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

Resultado:

s == "good news, everyone!";

6) Como removo espaços no início e no final de uma String?

"O método trim retorna uma cópia de uma String sem caracteres de espaço em branco no início e no final."

Métodos) Exemplos)
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Resultado:

s == "Good news, everyone!";