Bom dia pessoal,
Hoje vamos falar um pouco sobre uma das classes mais utilizadas no nosso dia-dia, a classe String. E complementaremos com duas classes que são utilizadas para facilitar o uso das Strings.
Assuntos
String
O que precisamos saber de String para a certificação?
charAt(); Retorna o caracter localizado no Ãndice especÃfico.
concat(); Anexa uma String ao final de outra.
equalsIgnoreCase(); Determina a igualdade de duas Strings, ignorando maiúsculas com minúsculas.
lenght(); Retorna o número de caracteres de uma String.
replace(); Substitui as ocorrências de um caracter por um outro caracter.
substring(); Retorna uma parte de uma String.
toLowerCase(); Retorna uma String em letras minúsculas.
toString(); Retorna o valor de uma String.
toUpperCase(); Retorna uma String em letras maiúsculas.
trim(); Remove os espaços em branco no inÃcio e no fim de uma String.
Vejamos alguns exemplos:
1. Métodos:
public static void main(String[] args) {
String s1 = “abcdef”;
System.out.println(s1);
char c = s1.charAt(3);
System.out.println(c);
s1 = s1.concat(“ghij”);
System.out.println(s1);
boolean equals = s1.equalsIgnoreCase(“ABCDEFGHIJ”);
System.out.println(equals);
int length = s1.length();
System.out.println(length);
String s2 = “XEGAX”.replace(‘X’, ‘L’);
System.out.println(s2);
System.out.println(s2.substring(2));
System.out.println(s2.substring(2, 4));
String s3 = “Java InTerEssAnte!”.toLowerCase();
System.out.println(s3);
String s4 = “Java InTerEssAnte!”.toUpperCase();
System.out.println(s4);
String s5 = ” 0123 456 “.trim();
System.out.println(s5);
}
2. String e a criação de Objetos
public static void main(String[] args) {
String a = “abcde”; // Cria 1º Objeto na memoria “abcde”
a.concat(“fghij”); // Cria o 2º “fghij” e o 3º “abcdefghij” Objeto na memoria
String b = “abcde”; // Nao cria um novo Objeto porque ja existe um Objeto “abcde” na memoria
}
3. Dica sobre concatenação com Strings
public static void main(String[] args) {
String a = “abcde”;
a = a + “fghij”; // O operador + adiciona a string posterior a string anterior “abcdefghij”
a.concat(“XX”); // Apenas a chamada ao metodo concat nao atribui o valor XX na variavel a
System.out.println(a);
a += “XX”; // Neste caso temos uma atribuicao, entao a variavel a recebera XX -> “abcdefghijXX”
System.out.println(a);
}
StringBuffer e StringBuilder
O que precisamos saber de StringBuffer e StringBuilder para a certificação?
A classe StringBuffer tem seus métodos declarados como synchronized e por isso são ótimos para trabalhar com Threads, já a classe StringBuilder não tem seus métodos sincronizados com isso tem a vantagem de que pode ser mais rápida (mas não use essa classe para sistemas com muitas threads).
Iremos trabalhar mais com essas classes quando falaremos de Threads.
Veja um exemplo de StringBuffer
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer(“abcde”);
s1.append(“fghij”);
System.out.println(s1);
StringBuffer s2 = new StringBuffer(“abcde”);
s2.reverse().append(“fghij”).insert(5, “<>”);
System.out.println(s2);
}
É isso ai pessoal, compartilhem, comentem e estudem!
Escrito por Marcos Oto Picarelli Prado
1 Comentário
André Willik Valenti
setembro 28th, 2011 @ 11:50
1Eaê Oto!
Complementando o post…
Sobre esta afirmação:
Ao criar uma nova String a JVM verifica no pool de String se já existe alguma igual e então faz com que sua nova String (variável de referência) aponte para o Objeto (memória) existente.
Se vc fizer:
String a = “asdf”;
String b = “asdf”;
Realmente, só será criada uma string em memória, à qual duas variáveis diferentes irão se referir.
Mas se vc fizer:
String a = “asdf”;
String b = new String(“asdf”);
Aà vc criará dois objetos. Note que o efeito prático é o mesmo. Fazer “new String” não tem vantagem nenhuma, só gasta mais memória.
Sobre StringBuffer e StringBuilder, a regra geral é: use StringBuilder! É a mesma coisa que com Vector e ArrayList: evite Vector e prefira ArrayList. Antigamente, eles sincronizavam um monte de métodos na biblioteca padrão. Depois, perceberam que isso causava uma perda de desempenho signficativa, que raramente trazia vantagens. AÃ, escreveram novas versões de algumas classes sem sincronizar os métodos.
No caso de ArrayList, se vc precisar de uma ArrayList thread-safe, o jeito recomendado é fazer Collections.synchronizedList(new ArrayList()). No caso de SBuffer/Builder, creio que não tenha isso, então, se precisar de uma versão thread-safe, o negócio é usar StringBuffer mesmo.
[]s!
RSS dos comentários deste post · TrackBack URI
Comente