Métodos Importantes do StringBuilder
Como com o String , não vamos cobrir todos os métodos da classe StringBuilder .
Estes são os que você pode ver no exame.
charAt(), indexOf(), length(), e substring()
Esses quatro métodos funcionam exatamente da mesma maneira que na classe String. Certifique-se de que você pode identificar a saída deste exemplo:
StringBuilder sb = new StringBuilder("animals");
String sub = sb.substring(sb.indexOf("a"), sb.indexOf("al"));
int len = sb.length();
char ch = sb.charAt(6);
System.out.println(sub + " " + len + " " + ch);
A resposta correta é anim 7 s. O método indexOf () chama retorna 0 e 4, respectivamente. substring () retorna a String começando com o índice 0 e terminando logo antes do índice 4.
length() retorna 7 porque é o número de caracteres no StringBuilder em vez do que um índice. Finalmente, o charAt () retorna o caracter no índice 6. Aqui nós começamos com 0 porque estamos nos referindo a índices. Se nada disso soar familiar, volte e leia a seção sobre String novamente.
Observe que substring () retorna uma String em vez de um StringBuilder . É por isso que sb não é alterado. substring () é realmente apenas um método que pergunta onde a substring deve ser.
append()
O método append () é de longe o método mais utilizado em StringBuilder. De fato, é tão freqüentemente usado que acabamos de começar a usá-lo sem comentários. Felizmente, esse método faz exatamente o que parece: adiciona o parâmetro ao StringBuilder e retorna uma referência para o StringBuilder atual. Uma das assinaturas do método é a seguinte:
StringBuilder append(String str)
Observe que dissemos uma das assinaturas do método. Existem mais de 10 métodos de assinatura que parecem semelhantes, mas que tomam diferentes tipos de dados como parâmetros. Todos esses métodos são fornecidos para que você possa escrever código como este:
StringBuilder sb = new StringBuilder().append(1).append('c');
sb.append("-").append(true);
System.out.println(sb); // 1c-true
Bom método de encadeamento, não é? append() é chamado diretamente após o construtor. Por ter todas estas assinaturas de métodos, você pode simplesmente chamar append () sem precisar converter parâmetro para uma String primeiro.
insert()
O método insert () adiciona caracteres ao StringBuilder no índice solicitado e retorna uma referência ao StringBuilder atual . Assim como append () , existem muitos assinaturas de métodos para diferentes tipos. Aqui está um:
StringBuilder insert(int offset, String str)
Preste atenção ao deslocamento nesses exemplos. É o índice onde queremos inserir o parâmetro solicitado.
3: StringBuilder sb = new StringBuilder("animals");
4: sb.insert(7, "-"); // sb = animals-
5: sb.insert(0, "-"); // sb = -animals-
6: sb.insert(4, "-"); // sb = -ani-mals
7: System.out.println(sb);
A linha 4 diz para inserir um traço no índice 7, que é o final da seqüência de caracteres. atores. A linha 5 diz para inserir um traço no índice 0, que é o começo.
Finalmente, a linha 6 diz para inserir um traço antes do índice 4. Os criadores do exame tentarão fazer você tropeçar nisso. À medida que adicionamos e removemos caracteres, seus índices mudam. Quando você vê um questão de lidar com tais operações, desenhe o que está acontecendo para que você não fique confuso.
delete() e deleteCharAt()
O método delete () é o oposto do método insert (). Remove caracteres da sequência e retorna uma referência ao StringBuilder atual. O método deleteCharAt() é conveniente quando você deseja excluir apenas um caractere. As assinaturas do método são como as seguintes:
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
O código a seguir mostra como usar esses métodos:
StringBuilder sb = new StringBuilder("abcdef");
sb.delete(1, 3); // sb = adef
sb.deleteCharAt(5); // throws an exception
Primeiro, excluímos os caracteres que começam com o índice 1 e terminam logo antes do índice 3. nos dá adef. Em seguida, pedimos ao Java para excluir o caractere na posição 5. No entanto, o valor restante é de apenas quatro caracteres, então lança um StringIndexOutOfBoundsException.
reverse()
Depois de tudo isso, é hora de um método agradável e fácil. O método reverse() faz exatamente o que soa como: inverte os caracteres nas seqüências e retorna uma referência ao atual StringBuilder. A assinatura do método é a seguinte:
StringBuilder reverse()
O código a seguir mostra como usar este método:
StringBuilder sb = new StringBuilder("ABC");
sb.reverse();
System.out.println(sb);
Como esperado, isso imprime CBA . Este método não é tão interessante. Talvez os criadores do exame gostariam de incluí-lo para encorajá-lo a anotar o valor em vez de confiar na memória para índices.
toString()
O último método converte um StringBuilder em uma String. A assinatura do método é a seguinte:
String toString()
O código a seguir mostra como usar este método:
String s = sb.toString();
Muitas vezes, o StringBuilder é usado internamente para fins de desempenho, mas o resultado final precisa ser uma String. Por exemplo, talvez precise ser passado para outro método que é esperando uma String .