Contenu du cours
Java Étendu
Java Étendu
Plus en Profondeur dans la Chaîne
Comment fonctionne réellement String ?
Vous savez déjà ce qu'est une String
et comment travailler avec elle. Ce chapitre couvrira les aspects théoriques de ce qui se cache à l'intérieur d'une String
.
Explorons la représentation sous-jacente des valeurs String
en Java. Initialement, String
était implémenté comme un tableau de valeurs char
, ce qui était simple et intuitif. Cependant, il a ensuite été transformé en 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, n'utilisant qu'un quart de l'espace.
Mais comment une String
peut-elle accueillir divers caractères, y compris ceux non numériques ? Le mécanisme est semblable à 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 la représentation d'une large gamme de caractères dans une String
.
Jetons un coup d'œil à une illustration représentant la valeur String
"Hello" :
Les cellules contiennent des éléments de type byte
, que nous prenons de la table ASCII. Nous pouvons même voir dans le code le tableau exact de byte
qui est stocké dans la valeur d'une variable String
. Cela peut être fait en utilisant la méthode getBytes()
.
Main
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(); } }
Nous pouvons voir que les valeurs byte
sont identiques à celles montrées dans le diagramme 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[]
que nous obtenons d'un objet String
.
Merci pour vos commentaires !