Передача Даних у Java
Як передається інформація в Java
З попереднього курсу відомо, що існує два типи пам'яті — стек та купа. Розглянемо, як дані зберігаються в цих двох областях пам'яті:
Main.java
123456789package 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: за посиланням чи за значенням?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.63
Передача Даних у Java
Свайпніть щоб показати меню
Як передається інформація в Java
З попереднього курсу відомо, що існує два типи пам'яті — стек та купа. Розглянемо, як дані зберігаються в цих двох областях пам'яті:
Main.java
123456789package 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: за посиланням чи за значенням?
Дякуємо за ваш відгук!