Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Aprofundando em String | String Avançado
Java Avançado

bookAprofundando 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

Main.java

copy
12345678910111213141516
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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.63

bookAprofundando em String

Deslize para mostrar o menu

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

Main.java

copy
12345678910111213141516
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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 1
some-alt