Índices de métodos de StringBuffer hora começando do 0, hora começando do 1

2 respostas
T

Alguém poderia me explicar o porque de em métodos como delete(int x,int y), replace(int x, int y) e substring(int x, int y) o índice inicial das variáveis ‘x’ começam do 0 e o índice inicial das variáveis ‘y’ começam do 1?

Por exemplo:

public class TestString3 { public static void main(String [] args){ StringBuffer s = new StringBuffer("1234"); s.delete(0,1); System.out.println(s); } }

O código acima gera como saída 234 (e não 34). Ou seja, para o primeiro parâmetro (0 neste caso) o primeiro índice inicial da string é considerado 0 e, para o segundo parâmetro (1 neste caso) o índice inicial da string é considerado 1 (e não 0). Qual a lógica de isso ser assim? Para mim seria mais lógico se ambos começassem do 0 (assim, o código acima retornaria apenas 34).

Desde já agradeço!

2 Respostas

oddy.silva

Pense que uma String é um array de caracteres. Por exemplo, se você criasse um array com duas posições e quisesse inserir a palavra “oi” , você faria assim:

meuArray[0] = 'o';
meuArray[1] = 'i';

Por isso que nesses métodos o primeiro elemento sempre está no índice 0.

Depois você abre o Netbeans e cria uma String. Depois você segura o Ctrl e clica em cima do nome String (que você nomeou), isso fará com que você entre na classe String. Dá uma olhada lá, você vai ver que quase todos os métodos tem um ‘char[]’.

M

Qual a lógica disse eu não sei, mas toda a API que trabalha com Strings funciona dessa forma: primeiro índice inclusive até o último índice exclusive (isso deve ter alguma relação com o fato de String armazenarem seu conteúdo em arrays de char e o índice de um array ir de 0 até length - 1).

Por exemplo:

<a href="http://java.sun.com/docs/books/tutorial/java/data/manipstrings.html" data-bbcode="true">http://java.sun.com/docs/books/tutorial/java/data/manipstrings.html</a> (veja as várias imagens)

<a href="http://java.sun.com/docs/books/tutorial/java/data/buffers.html" data-bbcode="true">http://java.sun.com/docs/books/tutorial/java/data/buffers.html</a> (aqui fala sobre buffers de String)
Criado 7 de janeiro de 2010
Ultima resposta 8 de jan. de 2010
Respostas 2
Participantes 3