Aprofundando em String
Como Strings Realmente Funcionam em Java
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 subjacente 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 implementada como 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 vários caracteres, inclusive não numéricos? O mecanismo é semelhante ao de uma variável char. Utiliza-se 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 obtidos 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
12345678910111213141516package 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 apresentados no diagrama acima. Além disso, caso tenha interesse, é possível consultar a tabela ASCII e comparar o código de cada elemento com seu valor correspondente.
Podemos manipular esse array byte[] que obtemos de um objeto String.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.63
Aprofundando em String
Deslize para mostrar o menu
Como Strings Realmente Funcionam em Java
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 subjacente 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 implementada como 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 vários caracteres, inclusive não numéricos? O mecanismo é semelhante ao de uma variável char. Utiliza-se 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 obtidos 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
12345678910111213141516package 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 apresentados no diagrama acima. Além disso, caso tenha interesse, é possível consultar a tabela ASCII e comparar o código de cada elemento com seu valor correspondente.
Podemos manipular esse array byte[] que obtemos de um objeto String.
Obrigado pelo seu feedback!