Датҳо дар Java чӣ гуна нигоҳ дошта мешаванд?
sobes.tech AI
Ҷавоб аз AI
Данни дар Java по различни начини се съхраняват в паметта:
-
Примитивни типове: Стойностите се съхраняват директно в определено място в паметта (например, стек). Те включват
byte,short,int,long,float,double,boolean,char.// int - примитивен тип, стойността се съхранява директно int age = 30; -
Референтни типове: В паметта се съхранява референция (адрес), която сочи към мястото, където се намира самият обект (в купчината). Те включват класове, интерфейси, масиви.
// String - референтен тип, data съдържа референция към обект "Hello" в купчината String data = "Hello"; // Обектът CustomObject е създаден в купчината, obj съдържа референция към него CustomObject obj = new CustomObject(); -
Масиви: Обекти в купчината, съдържащи набор от елементи (или примитивни стойности, или референции към други обекти). Променливата на масива съдържа референция към този обект.
// Масив от int, в nums се съхранява референция към самия масивен обект в купчината int[] numbers = new int[10]; // Масив от низове, в names се съхранява референция към масив от обекти String String[] names = {"Alice", "Bob"}; -
Обекти: Създават се в купчината (Heap). Променливата съдържа референция към обекта. Вътре в обекта могат да се съхраняват както примитивни стойности на неговите полета, така и референции към други обекти.
// Клас Person с полета class Person { String name; // Референция към обект String int age; // Примитивна стойност } // Създаване на обект Person в купчината, person съдържа референция Person person = new Person(); person.name = "Charlie"; person.age = 25; -
Стриймове: Обекти на класа
String, съхраняват се в купчината. Стриймовете са неизменяеми (immutable). Техните стойности често се кешират в String Pool за оптимизация, когато се създават като литерали.// Стриймов литерал, може да бъде създаден в String Pool String str1 = "Java"; // Създаване на нов обект String в купчината String str2 = new String("Java"); -
Колекции (List, Set, Map и др.): Обекти, съхраняващи се в купчината. Съдържат референции към други обекти.
// ArrayList съхранява референции към добавените обекти String List<String> fruits = new ArrayList<>(); fruits.add("Apple"); fruits.add("Banana"); -
Стек (Stack): Използва се за съхраняване на локални променливи (примитивни типове), референции към обекти и информация за извиквания на методи (call stack). Животът на данните в стека е свързан с извикваната метода.
-
Куча (Heap): Използва се за съхраняване на всички обекти. Почистващият паметта (garbage collector) освобождава паметта.
Така, данните в Java са разпределени между стека (за примитиви и референции) и купчината (за обекти).