"Olá, amigo!"
"Oi, Ellie."
"Vou falar sobre substrings. Uma substring é uma parte de uma string. E a operação mais comum realizada em strings (depois de combinar várias strings juntas) é obter uma substring."
7) Como faço para obter parte de uma String?
"O método substring retorna parte de uma String. Este método tem duas versões."
"A primeira versão retorna a substring especificada pelos índices inicial e final. Mas o caractere no índice final não está incluído! Se você passar os números 1 e 3, a substring conterá apenas o segundo e o terceiro caracteres (lembre-se que os índices começam com 0)."
"A segunda versão retorna a substring a partir do índice passado até o final da String."
Métodos) | Exemplos) |
---|---|
|
|
Resultado:
|
|
|
|
"Isso é bastante simples. Obrigado, Ellie."
"Também vou explicar o funcionamento interno dos objetos String para você."
"Como você provavelmente já sabe, String é uma classe imutável. E que vantagens isso nos dá? Acontece que uma das principais vantagens é a capacidade de obter uma substring. Mas o mais importante primeiro."
"Internamente, um objeto String contém um array de caracteres, o que não é tão difícil de adivinhar. Mas ele também armazena mais duas variáveis: o índice do primeiro caractere do array e a contagem de caracteres. são usados."
"Quando criamos uma substring usando o método substring , um novo objeto String é criado."
"Mas, em vez de armazenar uma referência a uma nova matriz de caracteres, o objeto armazena uma referência à matriz antiga, bem como duas variáveis que ele usa para determinar a parte da matriz de caracteres original que está associada a ela."
"Eu não entendi nada disso."
"Quando uma substring é criada, a matriz de caracteres não é copiada para o novo objeto String. Em vez disso, ambos os objetos armazenam uma referência à matriz de caracteres original. Mas! O segundo objeto também armazena duas variáveis: seu índice inicial na matriz e o número de caracteres que pertencem à substring."
"Confira:"
Obtendo uma substring | O que está armazenado dentro da substring |
---|---|
|
O que está armazenado em s:
|
|
O que está armazenado em s2:
|
|
O que é armazenado em s3:
|
"Todas as três Strings armazenam uma referência ao mesmo array de caracteres, mas também armazenam o índice do primeiro e do último caracteres que pertencem a elas. Ou, mais precisamente, o índice do primeiro caractere e a contagem de caracteres."
"Isso faz sentido agora."
"Portanto, se você pegar uma String com 10.000 caracteres e criar 10.000 substrings de qualquer tamanho, essas substrings usarão muito pouca memória, porque a matriz de caracteres não é duplicada. Essas Strings, que você esperaria usar muito de espaço, levará literalmente apenas alguns bytes."
"Legal!"
"Mas você poderia fazer isso se pudesse modificar Strings?"
"Não, alguém poderia mudar a primeira String, e então todas as suas substrings também mudariam. Agora faz sentido porque eles fizeram isso. Essa é uma solução muito legal."
"Estou feliz que você gostou."
GO TO FULL VERSION