Глибше у String
Як насправді працює String?
Ви вже знаєте, що таке String
і як з ним працювати. У цьому розділі розглядаються теоретичні аспекти внутрішньої будови String
.
Дослідимо, як саме представлені значення String
у Java. Спочатку String
реалізовувався як масив значень типу char
, що було просто та інтуїтивно. Однак згодом реалізація перейшла на масив значень типу byte
. З'ясуємо причини цієї зміни.
Змінна типу char
у Java займає 2 байти пам'яті, тоді як змінна типу byte
потребує лише 1 байт. Використовуючи значення byte
, можна суттєво зменшити обсяг пам'яті, використовуючи лише чверть простору.
Як же String
зберігає різні символи, включаючи нечислові? Механізм подібний до змінної типу char
. Використовується таблиця ASCII, де числові дані зіставляються з певними символами, що дозволяє представляти широкий спектр символів у String
.
Розглянемо ілюстрацію, яка показує значення String
"Hello":
Комірки містять елементи типу byte
, які беруться з таблиці ASCII. У коді можна навіть переглянути точний масив byte
, що зберігається у значенні змінної типу String
. Це можна зробити за допомогою методу getBytes()
.
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(); } }
Можна побачити, що значення byte
ідентичні тим, що показані на діаграмі вище. Додатково, якщо цікаво, можна звернутися до ASCII таблиці та порівняти код кожного елемента з його відповідним значенням.
Можна маніпулювати цим масивом byte[]
, який отримується з об'єкта String
.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.63
Глибше у String
Свайпніть щоб показати меню
Як насправді працює String?
Ви вже знаєте, що таке String
і як з ним працювати. У цьому розділі розглядаються теоретичні аспекти внутрішньої будови String
.
Дослідимо, як саме представлені значення String
у Java. Спочатку String
реалізовувався як масив значень типу char
, що було просто та інтуїтивно. Однак згодом реалізація перейшла на масив значень типу byte
. З'ясуємо причини цієї зміни.
Змінна типу char
у Java займає 2 байти пам'яті, тоді як змінна типу byte
потребує лише 1 байт. Використовуючи значення byte
, можна суттєво зменшити обсяг пам'яті, використовуючи лише чверть простору.
Як же String
зберігає різні символи, включаючи нечислові? Механізм подібний до змінної типу char
. Використовується таблиця ASCII, де числові дані зіставляються з певними символами, що дозволяє представляти широкий спектр символів у String
.
Розглянемо ілюстрацію, яка показує значення String
"Hello":
Комірки містять елементи типу byte
, які беруться з таблиці ASCII. У коді можна навіть переглянути точний масив byte
, що зберігається у значенні змінної типу String
. Це можна зробити за допомогою методу getBytes()
.
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(); } }
Можна побачити, що значення byte
ідентичні тим, що показані на діаграмі вище. Додатково, якщо цікаво, можна звернутися до ASCII таблиці та порівняти код кожного елемента з його відповідним значенням.
Можна маніпулювати цим масивом byte[]
, який отримується з об'єкта String
.
Дякуємо за ваш відгук!