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).