Dypere inn i String
Hvordan strenger faktisk fungerer i Java
Du kjenner allerede til hva en String er og hvordan den brukes. Dette kapittelet tar for seg de teoretiske aspektene ved hva som ligger bak en String.
La oss utforske den underliggende representasjonen av String-verdier i Java. Opprinnelig ble String implementert som et array av char-verdier, noe som var enkelt og intuitivt. Senere gikk man over til å bruke et array av byte-verdier. La oss forstå begrunnelsen for denne endringen.
En char-variabel i Java opptar 2 byte minne, mens en byte-variabel kun krever 1 byte. Ved å bruke byte-verdier kan vi redusere minnebruken betydelig, og kun bruke en fjerdedel av plassen.
Men hvordan kan en String håndtere ulike tegn, inkludert ikke-numeriske? Mekanismen ligner på den for en char-variabel. Vi benytter oss av ASCII-tabellen, hvor numeriske data tilordnes bestemte tegn, slik at et bredt spekter av tegn kan representeres i en String.
Her er en illustrasjon som viser String-verdien "Hello":
Cellene inneholder elementer av typen byte, som vi henter fra ASCII-tabellen. Vi kan til og med se i koden det eksakte byte-arrayet som lagres i verdien til en String-variabel. Dette kan gjøres ved å bruke getBytes()-metoden.
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(); } }
Vi kan se at byte-verdiene er identiske med de som vises i diagrammet ovenfor. I tillegg, hvis du er interessert, kan du se på ASCII-tabellen og sammenligne koden til hvert element med tilsvarende verdi.
Vi kan manipulere denne byte[]-tabellen som vi får fra et String-objekt.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain why Java switched from char[] to byte[] for String storage?
How does Java handle non-ASCII characters in Strings if it uses byte arrays?
Can you show an example of using getBytes() with a String in Java?
Awesome!
Completion rate improved to 2.63
Dypere inn i String
Sveip for å vise menyen
Hvordan strenger faktisk fungerer i Java
Du kjenner allerede til hva en String er og hvordan den brukes. Dette kapittelet tar for seg de teoretiske aspektene ved hva som ligger bak en String.
La oss utforske den underliggende representasjonen av String-verdier i Java. Opprinnelig ble String implementert som et array av char-verdier, noe som var enkelt og intuitivt. Senere gikk man over til å bruke et array av byte-verdier. La oss forstå begrunnelsen for denne endringen.
En char-variabel i Java opptar 2 byte minne, mens en byte-variabel kun krever 1 byte. Ved å bruke byte-verdier kan vi redusere minnebruken betydelig, og kun bruke en fjerdedel av plassen.
Men hvordan kan en String håndtere ulike tegn, inkludert ikke-numeriske? Mekanismen ligner på den for en char-variabel. Vi benytter oss av ASCII-tabellen, hvor numeriske data tilordnes bestemte tegn, slik at et bredt spekter av tegn kan representeres i en String.
Her er en illustrasjon som viser String-verdien "Hello":
Cellene inneholder elementer av typen byte, som vi henter fra ASCII-tabellen. Vi kan til og med se i koden det eksakte byte-arrayet som lagres i verdien til en String-variabel. Dette kan gjøres ved å bruke getBytes()-metoden.
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(); } }
Vi kan se at byte-verdiene er identiske med de som vises i diagrammet ovenfor. I tillegg, hvis du er interessert, kan du se på ASCII-tabellen og sammenligne koden til hvert element med tilsvarende verdi.
Vi kan manipulere denne byte[]-tabellen som vi får fra et String-objekt.
Takk for tilbakemeldingene dine!