Sobes.tech
Junior

Java-да жолдар пулі дегеніміз не?

sobes.tech AI

AI-дан жауап

String Pool — бұл JVM-нің Heap аймағындағы, жолдық литералдар сақталатын орын. JVM жол литералын кездестіргенде, ол алдымен осы пулды тексереді. Егер жол бұрыннан бар болса, ол объектінің сілтемесін қайтарады. Егер жоқ болса, жаңа жол объектісі пулда жасалып, оның сілтемесі қайтарылады.

Артықшылықтары:

  • Жадыны үнемдеу: Бірнеше сілтеме бірдей жол объектісіне сілтеме жасай алады.
  • Өнімділік: Пулдан алынған жолдар үшін сілтемелерді салыстыру (==) салыстырудан жылдамырақ, ал жолдардың мазмұнын салыстыру (equals()) баяу.

Мысал:

// Егер ол пулда болмаса, жолды құрайды
String s1 = "hello";

// Сол объектінің сілтемесін қайтарады "hello" пулдан
String s2 = "hello";

// s1 және s2 бірдей объектіге сілтеме жасайды
System.out.println(s1 == s2); // Шығарады true

// Жаңа жол объектісін құрады "hello" хипте, пулда емес
String s3 = new String("hello");

// s1 және s3 әртүрлі объектілерге сілтеме жасайды
System.out.println(s1 == s3); // Шығарады false

// Жолдардың мазмұны бірдей
System.out.println(s1.equals(s3)); // Шығарады true

intern() әдісін new String() көмегімен жасалған жолды нақты пулға қосу немесе сол мазмұндағы пулдағы жолға сілтеме алу үшін қолдануға болады.

// Жаңа жол объектісін құрады "world" хипте
String s4 = new String("world");

// "world"-ты пулға қосады (егер ол жоқ болса) және сілтемені қайтарады
String s5 = s4.intern();

// Пулда жолды құрады (сілтеме s5 көрсететін объектіге)
String s6 = "world";

// s5 және s6 бірдей объектіге сілтеме жасайды
System.out.println(s5 == s6); // Шығарады true