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
course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

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

course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

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