Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Djupare In I Sträng | Sträng Avancerad
Java Fördjupad
course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
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

Main.java

copy
12345678910111213141516
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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java Fördjupad

Java Fördjupad

1. Djupgående Java-struktur
2. Metoder
3. Sträng Avancerad
4. Klasser
5. Klasser Avancerat

book
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

Main.java

copy
12345678910111213141516
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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 1
some-alt