Contenu du cours
Java Avancé
Java Avancé
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
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 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 !