Sobes.tech
Junior
207

Java-да деректер қалай сақталады?

AI-дан жауап

sobes.tech AI

Java-да деректер әртүрлі тәсілдермен жадында сақталады:

  • Примитивті типтер: Мәндер тікелей бөлінген орындарда сақталады (мысалы, стек). Оларға byte, short, int, long, float, double, boolean, char жатады.

    // int - примитивті тип, мән тікелей сақталады
    int жас = 30;
    
  • Сілтемелі типтер: Жадында сілтеме (мекенжай) сақталады, ол объектінің орналасқан жерін көрсетеді (қоқыс жәшігі). Оларға кластар, интерфейстер, массивтер жатады.

    // String - сілтемелі тип, data "Hello" объектісінің сілтемесін сақтайды
    String дерек = "Hello";
    // CustomObject объектісі қоқыс жәшігінде жасалады, obj оған сілтемені сақтайды
    CustomObject obj = new CustomObject();
    
  • Массивтер: Объектілер қоқыс жәшігінде орналасқан, элементтер жиынтығын қамтиды (примитивті мәндер немесе басқа объектілердің сілтемелері). Массив айнымалысы осы объектінің сілтемесін сақтайды.

    // Инт массиві, nums массив объектісінің сілтемесін сақтайды
    int[] сандар = new int[10];
    // Стринг массиві, names массив объектілерінің сілтемесін сақтайды
    String[] аттар = {"Alice", "Bob"};
    
  • Объектілер: Қоқыс жәшігінде жасалады (Heap). Айнымалы объектіге сілтемені сақтайды. Объект ішіндегі өрістердің мәндері примитивті немесе басқа объектілердің сілтемелері болуы мүмкін.

    // Person класы және оның өрістері
    class Person {
        String аты; // String объектісінің сілтемесі
        int жасы; // Примитивті мән
    }
    
    // Person объектісін қоқыс жәшігінде жасау, person сілтемені сақтайды
    Person адам = new Person();
    адам.аты = "Charlie";
    адам.жасы = 25;
    
  • Жолдар: String класының объектілері, жадында сақталады. Жолдар өзгермейтін (immutable). Олардың мәндері String Pool-да кэштелуі мүмкін, әсіресе литералдар ретінде жасалғанда.

    // Жол литералы, String Pool-да жасалуы мүмкін
    String жол1 = "Java";
    // Жаңа String объектісін қоқыс жәшігінде жасау
    String жол2 = new String("Java");
    
  • Коллекциялар (List, Set, Map және т.б.): Жадында сақталатын объектілер. Басқа объектілердің сілтемелерін қамтиды.

    // ArrayList қосылған объектілердің сілтемелерін сақтайды
    List<String> жемістер = new ArrayList<>();
    жемістер.add("Алма");
    жемістер.add("Банан");
    
  • Стек (Stack): Локальды айнымалыларды (примитивтер), объектілердің сілтемелерін және әдістер шақыру туралы ақпаратты сақтау үшін пайдаланылады (call stack). Деректердің өмірлік циклі шақырылатын әдіске байланысты.

  • Қоқыс жәшігі (Heap): Барлық объектілерді сақтау үшін пайдаланылады. Жадты тазалау garbage collector арқылы орындалады.

Осылайша, Java-да деректер стек (примитивтер мен сілтемелер үшін) және қоқыс жәшігі (объектер үшін) арасында бөлінеді.