Conteúdo do Curso
Java Avançado
Java Avançado
Aprofundando em String
Como o String realmente funciona?
Você já sabe o que é uma String
e como utilizá-la. Este capítulo abordará os aspectos teóricos do que está por trás de uma String
.
Vamos explorar a representação interna dos valores de String
em Java. Inicialmente, String
era implementada como um array de valores char
, o que era simples e intuitivo. No entanto, posteriormente, passou a ser um array de valores byte
. Vamos entender o motivo dessa mudança.
Uma variável char
em Java ocupa 2 bytes de memória, enquanto uma variável byte
requer apenas 1 byte. Ao utilizar valores byte
, é possível reduzir significativamente o uso de memória, utilizando apenas um quarto do espaço.
Mas como uma String
acomoda diversos caracteres, inclusive não numéricos? O mecanismo é semelhante ao de uma variável char
. Utilizamos a tabela ASCII, onde dados numéricos são mapeados para caracteres específicos, permitindo a representação de uma ampla variedade de caracteres em uma String
.
Veja a seguir uma ilustração representando o valor String
"Hello":
As células contêm elementos do tipo byte
, que são retirados da tabela ASCII. É possível até visualizar no código o array exato de byte
que está armazenado no valor de uma variável String
. Isso pode ser feito utilizando o método getBytes()
.
Main.java
package com.example; public class Main { public static void main(String[] args) { String hello = "Hello"; byte[] bytes = hello.getBytes(); printArray(bytes); } static void printArray(byte[] bytes) { for (byte element: bytes) { System.out.print(element + " "); } System.out.println(); } }
Podemos observar que os valores de byte
são idênticos aos mostrados no diagrama acima. Além disso, caso tenha interesse, consulte a tabela ASCII e compare o código de cada elemento com seu valor correspondente.
É possível manipular esse array byte[]
obtido a partir de um objeto String
.
Obrigado pelo seu feedback!