Approfondissement des Chaînes de Caractères
Comment fonctionne réellement String ?
Vous savez déjà ce qu'est une String
et comment l'utiliser. Ce chapitre abordera les aspects théoriques de ce qui se trouve à l'intérieur d'une String
.
Explorons la représentation sous-jacente des valeurs String
en Java. À l'origine, String
était implémenté comme un tableau de valeurs char
, ce qui était simple et intuitif. Cependant, il a ensuite évolué vers un tableau de valeurs byte
. Comprenons la raison de ce changement.
Une variable char
en Java occupe 2 octets de mémoire, tandis qu'une variable byte
ne nécessite qu'1 octet. En utilisant des valeurs byte
, nous pouvons réduire considérablement l'empreinte mémoire, en utilisant seulement un quart de l'espace.
Mais comment une String
peut-elle contenir divers caractères, y compris des caractères non numériques ? Le mécanisme est similaire à celui d'une variable char
. Nous utilisons la table ASCII, où les données numériques sont associées à des caractères spécifiques, permettant ainsi la représentation d'une large gamme de caractères dans une String
.
Observons une illustration représentant la valeur String
"Hello" :
Les cellules contiennent des éléments de type byte
, que nous prenons dans la table ASCII. Il est même possible de visualiser dans le code le tableau exact de byte
qui est stocké dans la valeur d'une variable String
. Cela peut être réalisé à l'aide de la méthode 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(); } }
Nous pouvons constater que les valeurs byte
sont identiques à celles présentées dans le schéma ci-dessus. De plus, si cela vous intéresse, vous pouvez consulter la table ASCII et comparer le code de chaque élément avec sa valeur correspondante.
Nous pouvons manipuler ce tableau byte[]
obtenu à partir d'un objet String
.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain why Java switched from char[] to byte[] for String storage?
How does the getBytes() method work in practice?
Can you show an example of manipulating the byte[] array from a String?
Awesome!
Completion rate improved to 2.63
Approfondissement des Chaînes de Caractères
Glissez pour afficher le menu
Comment fonctionne réellement String ?
Vous savez déjà ce qu'est une String
et comment l'utiliser. Ce chapitre abordera les aspects théoriques de ce qui se trouve à l'intérieur d'une String
.
Explorons la représentation sous-jacente des valeurs String
en Java. À l'origine, String
était implémenté comme un tableau de valeurs char
, ce qui était simple et intuitif. Cependant, il a ensuite évolué vers un tableau de valeurs byte
. Comprenons la raison de ce changement.
Une variable char
en Java occupe 2 octets de mémoire, tandis qu'une variable byte
ne nécessite qu'1 octet. En utilisant des valeurs byte
, nous pouvons réduire considérablement l'empreinte mémoire, en utilisant seulement un quart de l'espace.
Mais comment une String
peut-elle contenir divers caractères, y compris des caractères non numériques ? Le mécanisme est similaire à celui d'une variable char
. Nous utilisons la table ASCII, où les données numériques sont associées à des caractères spécifiques, permettant ainsi la représentation d'une large gamme de caractères dans une String
.
Observons une illustration représentant la valeur String
"Hello" :
Les cellules contiennent des éléments de type byte
, que nous prenons dans la table ASCII. Il est même possible de visualiser dans le code le tableau exact de byte
qui est stocké dans la valeur d'une variable String
. Cela peut être réalisé à l'aide de la méthode 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(); } }
Nous pouvons constater que les valeurs byte
sont identiques à celles présentées dans le schéma ci-dessus. De plus, si cela vous intéresse, vous pouvez consulter la table ASCII et comparer le code de chaque élément avec sa valeur correspondante.
Nous pouvons manipuler ce tableau byte[]
obtenu à partir d'un objet String
.
Merci pour vos commentaires !