Syvemmälle Merkkijonoon
Miten String todella toimii?
Tiedät jo, mikä String
on ja kuinka sitä käytetään. Tässä luvussa käsitellään teoreettisia näkökulmia siitä, mitä String
-olion sisällä tapahtuu.
Tutustutaan String
-arvojen taustalla olevaan esitystapaan Javassa. Alun perin String
toteutettiin char
-arvojen taulukkona, mikä oli suoraviivaista ja intuitiivista. Myöhemmin se kuitenkin muutettiin byte
-arvojen taulukoksi. Ymmärretään tämän muutoksen taustalla oleva syy.
char
-muuttuja Javassa vie 2 tavua muistia, kun taas byte
-muuttuja tarvitsee vain 1 tavun. Käyttämällä byte
-arvoja voimme merkittävästi pienentää muistinkulutusta, hyödyntäen vain neljäsosan tilasta.
Mutta miten String
voi sisältää erilaisia merkkejä, myös ei-numeerisia? Mekanismi on samanlainen kuin char
-muuttujalla. Hyödynnämme ASCII-taulukkoa, jossa numeeriset arvot on yhdistetty tiettyihin merkkeihin, mahdollistaen laajan merkkivalikoiman esittämisen String
-muuttujassa.
Tarkastellaan seuraavaksi havainnollistusta, joka esittää String
-arvon "Hello":
Solut sisältävät byte
-tyyppisiä alkioita, jotka otetaan ASCII-taulukosta. Voimme jopa tarkastella koodissa tarkkaa byte
-taulukkoa, joka tallennetaan String
-muuttujan arvoksi. Tämä onnistuu getBytes()
-metodilla.
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(); } }
Voimme nähdä, että byte
-arvot ovat identtisiä yllä olevan kaavion kanssa. Lisäksi, jos olet kiinnostunut, voit tarkastella ASCII-taulukkoa ja verrata kunkin alkion koodia sen vastaavaan arvoon.
Voimme käsitellä tätä byte[]
-taulukkoa, jonka saamme String
-oliosta.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.63
Syvemmälle Merkkijonoon
Pyyhkäise näyttääksesi valikon
Miten String todella toimii?
Tiedät jo, mikä String
on ja kuinka sitä käytetään. Tässä luvussa käsitellään teoreettisia näkökulmia siitä, mitä String
-olion sisällä tapahtuu.
Tutustutaan String
-arvojen taustalla olevaan esitystapaan Javassa. Alun perin String
toteutettiin char
-arvojen taulukkona, mikä oli suoraviivaista ja intuitiivista. Myöhemmin se kuitenkin muutettiin byte
-arvojen taulukoksi. Ymmärretään tämän muutoksen taustalla oleva syy.
char
-muuttuja Javassa vie 2 tavua muistia, kun taas byte
-muuttuja tarvitsee vain 1 tavun. Käyttämällä byte
-arvoja voimme merkittävästi pienentää muistinkulutusta, hyödyntäen vain neljäsosan tilasta.
Mutta miten String
voi sisältää erilaisia merkkejä, myös ei-numeerisia? Mekanismi on samanlainen kuin char
-muuttujalla. Hyödynnämme ASCII-taulukkoa, jossa numeeriset arvot on yhdistetty tiettyihin merkkeihin, mahdollistaen laajan merkkivalikoiman esittämisen String
-muuttujassa.
Tarkastellaan seuraavaksi havainnollistusta, joka esittää String
-arvon "Hello":
Solut sisältävät byte
-tyyppisiä alkioita, jotka otetaan ASCII-taulukosta. Voimme jopa tarkastella koodissa tarkkaa byte
-taulukkoa, joka tallennetaan String
-muuttujan arvoksi. Tämä onnistuu getBytes()
-metodilla.
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(); } }
Voimme nähdä, että byte
-arvot ovat identtisiä yllä olevan kaavion kanssa. Lisäksi, jos olet kiinnostunut, voit tarkastella ASCII-taulukkoa ja verrata kunkin alkion koodia sen vastaavaan arvoon.
Voimme käsitellä tätä byte[]
-taulukkoa, jonka saamme String
-oliosta.
Kiitos palautteestasi!