Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Передача Даних у Java | Глибока Структура Java
Java Extended
course content

Зміст курсу

Java Extended

Java Extended

1. Глибока Структура Java
2. Методи
3. Рядки: Розширений Рівень
4. Класи
5. Класи: Розширений Рівень

book
Передача Даних у Java

Як передається інформація в Java?

Ви знаєте з попереднього курсу, що існує два типи пам'яті — стек і купа. Розглянемо, як дані зберігаються в цих двох областях пам'яті:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Ми створили 3 різні змінні. Нижче наведено схему, яка ілюструє, як і де вони будуть зберігатися в пам'яті:

Розгляньмо, що ви спостерігали на діаграмі:

  • Ми бачимо поля String у стековій пам'яті, які є посиланнями на значення у купі (heap memory). Таким чином, ми не звертаємося до купи безпосередньо щоразу. Замість цього спочатку звертаємося до посилання у стековій пам'яті, що швидше, ніж доступ до купи. Ви вже стикалися з посиланнями на значення під час вивчення теми String Pool;
  • Ви можете побачити, що int не зберігається у heap memory; його значення зберігається безпосередньо у stack memory. Це стосується всіх примітивних типів даних (byte, short, int, long, float, double, та boolean). Таким чином, примітивні типи даних у Java передаються за значенням. Однак String не є примітивним типом даних, тому його значення зберігається у heap memory;
  • Для кожного нового посилання у heap memory створюється новий об'єкт. Однак, якщо дві змінні одного типу мають однакове значення, вони посилатимуться на один і той самий об'єкт у heap memory;
  • Integer Pool — це область у стековій пам'яті, де всі цілі значення у діапазоні від -128 до 127 пов'язані з посиланнями. Ця оптимізація виконується для підвищення продуктивності обробки чисел у Java, оскільки числа в цьому діапазоні використовуються найчастіше. Пам'ятайте, що stack memory працює швидше, ніж heap memory, тому завдяки Integer Pool ми отримуємо швидший відгук;
  • String Pool — це область у heap memory, де зберігаються ідентичні значення рядків.

Висновок

У Java все передається за значенням. Для об'єктів передається копія посилання, але сам об'єкт у heap залишається незмінним (якщо він є незмінним, наприклад, String).

Змінні у stack зберігають посилання на об'єкти, що знаходяться у heap. Це стосується всіх типів-посилань, включаючи String.

1. Що таке Integer Pool у Java?

2. Як передаються дані в Java: за посиланням чи за значенням?

question mark

Що таке Integer Pool у Java?

Select the correct answer

question mark

Як передаються дані в Java: за посиланням чи за значенням?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

Java Extended

Java Extended

1. Глибока Структура Java
2. Методи
3. Рядки: Розширений Рівень
4. Класи
5. Класи: Розширений Рівень

book
Передача Даних у Java

Як передається інформація в Java?

Ви знаєте з попереднього курсу, що існує два типи пам'яті — стек і купа. Розглянемо, як дані зберігаються в цих двох областях пам'яті:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }

Ми створили 3 різні змінні. Нижче наведено схему, яка ілюструє, як і де вони будуть зберігатися в пам'яті:

Розгляньмо, що ви спостерігали на діаграмі:

  • Ми бачимо поля String у стековій пам'яті, які є посиланнями на значення у купі (heap memory). Таким чином, ми не звертаємося до купи безпосередньо щоразу. Замість цього спочатку звертаємося до посилання у стековій пам'яті, що швидше, ніж доступ до купи. Ви вже стикалися з посиланнями на значення під час вивчення теми String Pool;
  • Ви можете побачити, що int не зберігається у heap memory; його значення зберігається безпосередньо у stack memory. Це стосується всіх примітивних типів даних (byte, short, int, long, float, double, та boolean). Таким чином, примітивні типи даних у Java передаються за значенням. Однак String не є примітивним типом даних, тому його значення зберігається у heap memory;
  • Для кожного нового посилання у heap memory створюється новий об'єкт. Однак, якщо дві змінні одного типу мають однакове значення, вони посилатимуться на один і той самий об'єкт у heap memory;
  • Integer Pool — це область у стековій пам'яті, де всі цілі значення у діапазоні від -128 до 127 пов'язані з посиланнями. Ця оптимізація виконується для підвищення продуктивності обробки чисел у Java, оскільки числа в цьому діапазоні використовуються найчастіше. Пам'ятайте, що stack memory працює швидше, ніж heap memory, тому завдяки Integer Pool ми отримуємо швидший відгук;
  • String Pool — це область у heap memory, де зберігаються ідентичні значення рядків.

Висновок

У Java все передається за значенням. Для об'єктів передається копія посилання, але сам об'єкт у heap залишається незмінним (якщо він є незмінним, наприклад, String).

Змінні у stack зберігають посилання на об'єкти, що знаходяться у heap. Це стосується всіх типів-посилань, включаючи String.

1. Що таке Integer Pool у Java?

2. Як передаються дані в Java: за посиланням чи за значенням?

question mark

Що таке Integer Pool у Java?

Select the correct answer

question mark

Як передаються дані в Java: за посиланням чи за значенням?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 2
some-alt