Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Plus en Profondeur dans la Chaîne | Chaîne Avancée
Java Étendu
course content

Contenu du cours

Java Étendu

Java Étendu

1. Structure Java Approfondie
2. Méthodes
3. Chaîne Avancée
4. Classes
5. Classes Avancées

book
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().

java

Main

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(); } }

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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt