segunda-feira, 12 de dezembro de 2011

Uso de Strings em Java

Como já vimos em Java, as cadeias de caracteres (strings) são manipuladas por uma classe - java.lang.String. Um ponto importante sobre String em Java é que elas não podem ser alteradas, porém (felizmente) as variáveis de referências podem. Pode parecer estranha a afirmação, mas na verdade é que um objeto String quando criado na memória, não poderá ser alterado. Vamos ver um exemplo:

String s1= "Esta é a primeira string";
String s2 = s1;
s1 = "Alterei a referência de s1";
s2 = "Alterei a referência de s2";

Os passos são os seguintes:
  1. O objeto String "Esta é a primeira string" é criado em memória e s1 passa a referenciá-lo.
  2. Na segunda linha s2 também referencia o mesmo objeto da memória. Não há desperdício.
  3. Na terceira linha do código é criado um objeto String "Alterei a referência de s1" na memória que passa a ser referenciado por s1.
  4. Na terceira linha do código é criado um objeto String "Alterei a referência de s2" na memória que passa a ser referenciado por s2.
  5. O garbage collector do Java remove o objeto String "Esta é a primeira string" já que ele não é mais referenciado por nenhuma variável.

Note que não foi feita alteração no objeto String da memória, somente as variáveis foram alteradas. As Strings são criadas em um pool que armazena todas as Strings coincidentes em um programa Java, ou seja, se você tiver duas variáveis que referenciam uma string "abcde" saiba que só terá uma string no pool, porém duas referências e, é por esta razão que as strings são inalteráveis.

Métodos úteis da classe java.lang.String

  • length: Obtém o tamanho da string
  • substringO nome deste método que não segue a convenção do Java. Deveria ser subString para ficar correto. Ele tem dois formatos:
substring(int inicio)
substring(int inicio, int fim)

    • inicio define a posição inicial da string (começando do 0) a ser retornada
    • fim define onde terminar a string (começando de 1)
  • concat: Adiciona uma string a outra que retorna como resultado do método, porém não altera a string em que o método está sendo executado.
  • equals - teste se uma string (passada como parâmetro) é igual a outra (do objeto).
  • equalsIgnoreCase - testa se uma string (do parâmetro) é igual a outra ignorando a diferença entre letras maiúsculas e minúsculas.
String primeiraString = "teste";
String segundaString = "TESTE";
System.out.println(segundaString.equals(primeiraString));
// resultado: false
System.out.println(segundaString.equalsIgnoreCase(primeiraString));

// resultado: true



  • replace - Substitui os caracteres de uma string (objeto), buscando o primeiro parâmetro e substituindo pelo segundo parâmetro. Note que o resultado é retornado pelo método, não alterando o objeto original. Veja o exemplo abaixo:

String txtASubtituir = "Est2 é um t2st2 d2 substituição";
txtASubtituir = txtASubtituir.replace('2','e');
System.out.println(txtASubtituir);
// resultado: Este é um teste de substituição


  • substring - Extrai uma seção de uma string, sendo o primeiro parâmetro a posição inicial e o segundo a quantidade de caracteres, como no exemplo:

String texto = "0123456789";
System.out.println(texto.substring(1,3));
// resultado: 123
// Note que a indexação da string começa em 0

Se for especificado um valor inválido para qualquer um dos dois argumento, uma exceção será lançada: java.lang.StringIndexOutOfBoundsException: String index out of range: xx


  • toLowerCase - troca todas as letras para minúsculas.
  • toUpperCase - troca todas as letras para maiúsculas.

String s = "teste de maiusculas";
s = s.toUpperCase();
System.out.println(s);
// resultado: TESTE DE MAIUSCULAS


  • trim - retira os espaços no início e do final da string.

String s = " String sem espaço no início e final ";
s = s.trim()
System.out.println("->"+s.trim()+"<-");
// resultado: ->String sem espaço no início e final<-

Nenhum comentário:

Postar um comentário