Kursinnehåll
Java Fördjupad
Java Fördjupad
Djupare In I Sträng
Hur fungerar String egentligen?
Du känner redan till vad en String
är och hur man arbetar med den. Detta kapitel behandlar de teoretiska aspekterna av vad som finns inuti en String
.
Låt oss utforska den underliggande representationen av String
-värden i Java. Ursprungligen implementerades String
som en array av char
-värden, vilket var enkelt och intuitivt. Senare övergick man dock till en array av byte
-värden. Låt oss förstå anledningen till denna förändring.
En char
-variabel i Java upptar 2 byte minne, medan en byte
-variabel endast kräver 1 byte. Genom att använda byte
-värden kan vi avsevärt minska minnesanvändningen och endast använda en fjärdedel av utrymmet.
Men hur kan en String
rymma olika tecken, inklusive icke-numeriska? Mekanismen liknar den för en char
-variabel. Vi använder oss av ASCII-tabellen, där numeriska data mappas till specifika tecken, vilket möjliggör representation av ett brett spektrum av tecken i en String
.
Låt oss titta på en illustration som visar String
-värdet "Hello":
Cellerna innehåller element av typen byte
, vilka vi hämtar från ASCII-tabellen. Vi kan till och med se i koden den exakta byte
-array som lagras i värdet för en String
-variabel. Detta kan göras med hjälp av metoden 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(); } }
Vi kan se att byte
-värdena är identiska med de som visas i diagrammet ovan. Om du dessutom är intresserad kan du titta på ASCII-tabellen och jämföra koden för varje element med dess motsvarande värde.
Vi kan manipulera denna byte[]
-array som vi får från ett String
-objekt.
Tack för dina kommentarer!