Ao modificar strings, você precisa usar as classes StringBuffer e StringBuilder.
Ao contrário da classe String, os objetos das classes StringBuffer e StringBuilder podem ser modificados várias vezes sem criar novos objetos não utilizados.
A classe StringBuilder foi proposta em Java 5. A maior diferença entre ela e StringBuffer é que StringBuilder O método não é thread-safe (thread-safety significa que, quando o acesso multi-threads, um mecanismo de bloqueio é usado. Quando um thread acessa determinados dados desta classe, ele é protegido e outros threads não podem acessá-lo até que o thread termine de ler. Outros threads Podem ser usados. Não haverá inconsistência de dados ou poluição de dados. Thread inseguro significa que a proteção de acesso aos dados não é fornecida e é possível que vários threads alterem os dados sucessivamente e os dados resultantes sejam dados sujos.
Como o StringBuilder tem uma vantagem de velocidade em relação ao StringBuffer, é recomendado usar a classe StringBuilder na maioria dos casos. Entretanto, quando o aplicativo requer segurança de thread, a classe StringBuffer deve ser usada.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
test String Buffer
A seguir estão os principais métodos suportados pela classe StringBuffer:
número de série | Descrição do método |
---|---|
1 | public StringBuffer append(String s) Acrescenta a string especificada a esta sequência de caracteres. |
2 | public StringBuffer reverse() Substitui esta sequência de caracteres por sua forma invertida. |
3 | public delete(int start, int end) Remove caracteres de uma substring desta sequência. |
4 | public insert(int offset, int i) Insere a representação de string do argumento int nesta sequência. |
5 | replace(int start, int end, String str) Substitui os caracteres em uma substring desta sequência pelos caracteres da String fornecida. |
Os métodos na lista a seguir são semelhantes aos da classe String:
número de série | Descrição do método |
1 | int capacidade() retorna a capacidade atual. |
2 | char charAt(int index) Retorna o valor char no índice especificado nesta sequência. |
3 | void garantirCapacity(int mínimoCapacity) Garante que a capacidade seja pelo menos igual ao mínimo especificado. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Copia caracteres desta sequência para a matriz de caracteres de destino dst . |
5 | int indexOf(String str) Retorna o índice da primeira ocorrência da substring especificada na string. |
6 | int indexOf(String str, int fromIndex) Começando no índice especificado, retorna o índice da primeira ocorrência da substring especificada na string. |
7 | int lastIndexOf(String str) Retorna o índice nesta string da ocorrência mais à direita da substring especificada. |
8 | int lastIndexOf(String str, int fromIndex) Retorna o índice nesta string da última ocorrência da substring especificada. |
9 | int length() retorna o comprimento em caracteres. |
10 | void setCharAt(int index, char ch) Define o caractere no índice fornecido como ch . |
11 | void setLength(int newLength) Define o comprimento da sequência de caracteres. |
12 | CharSequence subSequence(int start, int end) Retorna uma nova sequência de caracteres que é uma subsequência desta sequência. |
13 | String substring(int start) Retorna uma nova String contendo a subsequência de caracteres atualmente contida nesta sequência de caracteres. |
14 | String substring(int start, int end) Retorna uma nova String contendo a subsequência de caracteres atualmente contidos nesta sequência. |
15 | String toString() Retorna a representação em string dos dados nesta sequência. |