Sobes.tech
Intern

Ի՞նչ է տարբերությունը սկզբնական և հղումային տվյալների տեսակների միջև։

sobes.tech AI

Պատասխան AI-ից

Прамітыўныя тыпы непасрэдна захоўваюць значэнне, а спасылочныя — спасылку (адрас у памяці) на аб'ект, які ўтрымлівае значэнне.

Прамітыўныя тыпы:

  • займаюць фіксаваны і невялікі аб'ём памяці.
  • перадаюцца па значэнню (копіруецца сама значэнне).
  • пачынаюцца з маленькай літары.
  • ўключаюць: byte, short, int, long, float, double, boolean, char.
// Прыклад прамiтыўнага тыпу
int a = 10;
int b = a; // Копіруецца значэнне 10
b = 20;   // змяняецца толькі b, a застаецца 10

Спасылочныя тыпы:

  • займаюць розны аб'ём памяці, залежна ад змесціва аб'екта.
  • перадаюцца па спасылцы (копіруецца адрас аб'екта). Змена аб'екта па спасылцы ўплывае на ўсе зменныя, якія на яго спасылаюцца.
  • звычайна пачынаюцца з вялікай літары (класы).
  • ўключаюць: класы (String, Object, карыстацкія класы), інтэрфейсы, масівы.
// Прыклад спасылочнага тыпу
String str1 = new String("Hello");
String str2 = str1; // Копіруецца спасылка на аб'ект "Hello"
str2 = "World";   // str2 цяпер спасылаецца на новы аб'ект "World". str1 застаецца спасылацца на "Hello".

// Іншы прыклад з мутабельным аб'ектам
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Копіруецца спасылка на той жа аб'ект ArrayList
list2.add(2); // Дадаем элемент у аб'ект, даступны праз абедзве спасылкі
// Цяпер list1 змяшчае [1, 2] і list2 змяшчае [1, 2]

Кароткая табліца-супастаўленне:

Уласцівасць Прамітыўныя тыпы Спасылочныя тыпы
Захоўванне Значэнне Спасылка на аб'ект
Перадача Па значэнню Па спасылцы
Памер памяці Фіксаваны Зменны
Пачынаецца з Маленькай літары Звычайна з вялікай літары
Nullability Не могуць быць null Могуць быць null

Прамітыўныя тыпы абгортваюцца ў адпаведныя класы-абалонкі (wrapper classes) для працы з імі як з аб'ектамі (напрыклад, int у Integer).