Tutaq ki, ashagidaki formada bir class yaratmishiq : public class User { public String name ; public String username ; public int age ; public static String test ; public void foo (){} public static void foo2 (){} } application u run etdikde, javac .java fayllarini compile edib .class bytecodelarini yaratdiqdan sonra java, yeni JVM ishe dushur. Yalniz ehtiyaci oldugu classlari yaddasha yukleyir. Meselen, main methodunda, User classinin static metodunu cagiraq, bu zaman class load olunacaq ve ya class a ehtiyac duyulan diger hallarda. Eger kod hemin class a ehtiyac duymasa, bu class yaddasha yuklenmir. JVM yaddash da yer ayiran vaxti static acar sozu olanlari da class terkibinde saxladir. Yeni yaddash da onlar uchun de ayrica yer ayirir. Static - yeni stabil kimi de basha dushule biler. Bu classi i istifade etmek isteyende, yeni User. yazib classin icinde olan deyishen ve metodlara chatmaq isteyende yalniz static olanlar gorsen...
List terkibinde add , size , remove, set ve diger metodlari olan interfacedir. ArrayList, LinkedList, Vector - List interface den implements edib. ArrayList ozu arxada Array istifade edir. 1.add zamani eger capasity dolubsa, yeni array yaradir ve evvelki arrayi buna set edir. Performans cehetden problem olsa da, initialCapasity vermekle bu problemi onlemek olur. 2. remove zamani proses eyni gedir, yeni array yaradilir. Lakin burada problemin qarshisini almaq mumkun deyil. Her remove zamani yeni array yaradilir. 3. get prosesi burada optimal gedir. LinkedList arxada Array istifade etmir. Burada Obyektler bir birinin ichine set olunur. (Node) 1. Ilk add olunan zamani obyekt sonuncu index kimi yadda saxlanilir. Daha sonra her add zamani yadda saxlanan sonuncu obyekte yeni gelen obyekt set olunur. 2. Remove zamani ArrayList den ferqli olaraq burada optimal gedir. Remove olunacaq obyekt yerine ozunden sonraki obyekt set olunur. 3. get prosesi burada optimal veziyyet...
Comments
Post a Comment