Dieper in String
Hoe Strings daadwerkelijk werken in Java
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 gewijzigd naar een array van byte-waarden. Laten we het motief achter deze verandering 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, namelijk tot 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 worden gekoppeld aan specifieke tekens, waardoor een breed scala aan tekens in een String kan worden weergegeven.
Hier volgt een illustratie van de String-waarde "Hello":
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
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(); } }
We zien dat de byte-waarden identiek zijn aan die getoond 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!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 2.63
Dieper in String
Veeg om het menu te tonen
Hoe Strings daadwerkelijk werken in Java
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 gewijzigd naar een array van byte-waarden. Laten we het motief achter deze verandering 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, namelijk tot 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 worden gekoppeld aan specifieke tekens, waardoor een breed scala aan tekens in een String kan worden weergegeven.
Hier volgt een illustratie van de String-waarde "Hello":
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
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(); } }
We zien dat de byte-waarden identiek zijn aan die getoond 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!