Cursusinhoud
Java Uitgebreid
Java Uitgebreid
Dieper in String
Hoe werkt String eigenlijk?
Je weet al wat een String
is en hoe je ermee werkt. Dit hoofdstuk behandelt de theoretische aspecten van wat er zich binnen een String
bevindt.
Laten we de onderliggende representatie van String
-waarden in Java verkennen. Aanvankelijk werd String
geïmplementeerd als een array van char
-waarden, wat eenvoudig en intuïtief was. Later is dit echter veranderd naar een array van byte
-waarden. Laten we het motief achter deze wijziging begrijpen.
Een char
-variabele in Java neemt 2 bytes geheugen in beslag, terwijl een byte
-variabele slechts 1 byte vereist. Door gebruik te maken van byte
-waarden kunnen we het geheugengebruik aanzienlijk verminderen, tot slechts een kwart van de oorspronkelijke ruimte.
Maar hoe kan een String
verschillende tekens bevatten, inclusief niet-numerieke? Het mechanisme lijkt op dat van een char
-variabele. We maken gebruik van de ASCII-tabel, waarbij numerieke gegevens aan specifieke tekens worden gekoppeld, waardoor een breed scala aan tekens in een String
kan worden weergegeven.
Laten we een illustratie bekijken die de String
-waarde "Hello" weergeeft:
De cellen bevatten elementen van het type byte
, die we uit de ASCII-tabel halen. We kunnen zelfs in de code de exacte byte
-array bekijken die is opgeslagen in de waarde van een String
-variabele. Dit kan worden gedaan met de methode 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(); } }
We kunnen zien dat de byte
-waarden identiek zijn aan die in het bovenstaande diagram. Daarnaast kun je, als je geïnteresseerd bent, de ASCII-tabel raadplegen en de code van elk element vergelijken met de bijbehorende waarde.
We kunnen deze byte[]
-array, verkregen uit een String
-object, manipuleren.
Bedankt voor je feedback!