Kursusindhold
Java Udvidet
Java Udvidet
Dybere Ind i String
Hvordan fungerer String egentlig?
Du kender allerede til, hvad en String
er, og hvordan man arbejder med den. Dette kapitel vil dække de teoretiske aspekter af, hvad der ligger bag en String
.
Lad os undersøge den underliggende repræsentation af String
-værdier i Java. Oprindeligt blev String
implementeret som et array af char
-værdier, hvilket var ligetil og intuitivt. Senere blev det dog ændret til et array af byte
-værdier. Lad os forstå begrundelsen for denne ændring.
En char
-variabel i Java optager 2 bytes hukommelse, mens en byte
-variabel kun kræver 1 byte. Ved at anvende byte
-værdier kan vi markant reducere hukommelsesforbruget og kun bruge en fjerdedel af pladsen.
Men hvordan kan en String
rumme forskellige tegn, herunder ikke-numeriske? Mekanismen ligner den, der bruges for en char
-variabel. Vi benytter ASCII-tabellen, hvor numeriske data kortlægges til specifikke tegn, hvilket muliggør repræsentation af et bredt udvalg af tegn i en String
.
Lad os se på en illustration, der repræsenterer String
-værdien "Hello":
Cellerne indeholder elementer af typen byte
, som vi henter fra ASCII-tabellen. Vi kan endda i koden se det præcise byte
-array, der er gemt i værdien af en String
-variabel. Dette kan gøres ved hjælp af getBytes()
-metoden.
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(); } }
Vi kan se, at byte
-værdierne er identiske med dem, der vises i diagrammet ovenfor. Hvis du er interesseret, kan du desuden se på ASCII-tabellen og sammenligne koden for hvert element med den tilsvarende værdi.
Vi kan manipulere dette byte[]
-array, som vi får fra et String
-objekt.
Tak for dine kommentarer!