Classes de Texto
Classes de texto
Em linguagem de programação, textos são compostos por um conjunto de caracteres, números e símbolos com a proposta de resultar em conteúdo e informação.
Classes de Texto
Em se tratando de classes na linguagem Java responsáveis para representar conteúdos de tipo texto, podemos citar inicialmente três delas:
java.lang.String
A classe java.lang.String
representa cadeias de caracteres. Todos os literais de string em programas Java, como "abc", são implementados como instâncias dessa classe.
Strings são constantes; seus valores não podem ser alterados depois de criados. Buffers de string suportam strings mutáveis. Como os objetos String são imutáveis, eles podem ser compartilhados, por exemplo:
A classe String inclui métodos para examinar caracteres individuais da sequência, comparar strings, pesquisar strings, extrair substrings (pedaços) e criar uma cópia de uma string com todos os caracteres traduzidos para letras maiúsculas ou minúsculas. O mapeamento no caso é baseado na versão Unicode Standard especificada pela classe java.lang.Character
.
Vamos aos exemplos:
public class StringApp {
public static void main(String[] args) {
String str = "abc";
//é equivalente a:
char data[] = {'a', 'b', 'c'};
String str1 = new String(data);
//aqui mais alguns recursos oferecidos pela classe String
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
String password = "Sup3rP@ss!$%*&";
}
}
Percebemos acima que um tipo texto (string) suporta qualquer tipo de caractere, mas devemos ter consciência que linguagens de tipagem rígida como o Java possui relevância quanto aos tipos definidos.
public class StringApp {
public static void main(String[] args) {
String cep = "64000020"; // -> Integer
String celular = "11954360978"; // -> Long
String cpf = "03387634509"; // ?
String estadoCivil = "SOLTEIRO"; // Enum
}
}
java.lang.StringBuilder
Chegou a hora de conhecer as irmãs da classe String, a java.lang.StringBuilder
e java.lang.StringBuffer
, mas afinal por que tantas classes para utilizar em uso de caracteres na linguagem Java?
Primeiramente precisamos entender um fundamento extremamente relevante quando falamos em programação como um todo, o consumo de recurso de memória e como a linguagem Java define uma estratégia que melhor responde à este requisito que conhecemos como o princípio da imutabilidade e o Poll Strings, conceitos estes apresentados majestosamente pela Giuliana Bezerra.
Diferentemente da classe String, as classes StringBuilder e StringBuilder podem sofrer alterações em seus conteúdos realizando operações conforme listagem abaixo:
- append (acrescentar)
- insert (inserir)
- replace (substituir)
- delete (remover)
public class StringApp {
public static void main(String[] args) {
StringBuilder stringAlteravel = new StringBuilder("gleyson ");
// acrescentando o conteúdo sampaio
stringAlteravel.append("sampaio");
// substituindo o nome gleyson (os 7 digitos) para izabelly
stringAlteravel.replace(0,7,"izabelly");
//removendo o nome sampaio com um spaço no início
stringAlteravel.delete(8,16);
/*
inserindo o conteúdo sampaio novamente
a diferença entre insert e append é que o insert possibilita informar a posição
inclusive no início do conteúdo
*/
stringAlteravel.insert(8," sampaio");
stringAlteravel.insert(0,"Miss ");
System.out.println(stringAlteravel.toString());
}
}
System.out.println(stringAlteravel.toString());
E quanto a StringBuffer o que eu preciso saber? Pouca coisa, só que ela é um clone da StringBuilder e que proporciona segurança em contexto de Multi-thread reduzindo um pouco a performance.
public class StringApp {
public static void main(String[] args) {
StringBuffer builder = new StringBuffer();
int start = LocalDateTime.now().getNano();
for(int caractere = 1; caractere<=1000000; caractere++){
builder.append(caractere);
builder.append("\n");
}
//System.out.println(builder.toString());
System.out.println("Nano:" + (LocalDateTime.now().getNano() - start));
}
}