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

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

Висновок

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

Змінні у стеці зберігають посилання на об'єкти, що знаходяться у купі. Це стосується всіх типів-посилань, включаючи 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

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

Awesome!

Completion rate improved to 2.63

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

Висновок

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

Змінні у стеці зберігають посилання на об'єкти, що знаходяться у купі. Це стосується всіх типів-посилань, включаючи 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