Передача Даних у 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: за посиланням чи за значенням?
Все було зрозуміло?
Дякуємо за ваш відгук!
Секція 1. Розділ 2
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 2.63Секція 1. Розділ 2