05 + 1 = -106 degan qiymatga ega bo’lamiz
Download 20.91 Kb.
|
Primitive toifa bu xotirada faqatgina qiymati saql
Primitive toifa bu xotirada faqatgina qiymati saqlanadigan toifa ya’ni xechqanday referensga ega bo’lmagan biz murojat qilganimizda to’g’ridan-to’gri qiymatga murojat qila oladigan toifa. Primitiv toifalar Xotiraning Stack deb nomlangan qismida saqlanadi. Java dasturlash tilida Premitiv toifalar 3 turga bo’linadi: 1. Numeric yani raqamlarni (int, long, float, double)ozida saqlovchi toifalar. 2. Boolean yani true va false qiymatlarni saqlovchi toifalar. 3. Character yani belgilarni saqlovchi toifalar. ~ amalai bu Bitwase operation tilda operaotri NOT yani berilgan qiymatni 2 lik kodalri bilan ishlovchi operatorlar turkumiga kiruvchi operator: Bu operatorda berilgan qiymatni 2 likka otkaziladi va undagi barcha kodlari teskarisiga almashtiriladi Ya’ni: ~105 => ~ 1101001 0010110 shu xolatga 22 degan natijaga erishamiz lekin tog’ridan to’gri kasr xolatga otishda natija => -(n + 1) => (105 + 1) * -1 = -106 degan qiymatga ega bo’lamiz. >> va >>> bu opearatorlari ham bitwase operatsiyalardir birinchi navbatda >> Shift right opearoti >> bu operator berilgan qiymatni ikkilik kodini bir marta onga siljitadi. Ya’ni: 105 >> 1 => 1101001 0110100 va surilgan xolatdan keyingi natija 52 degan qiymatga keladi Bu amalning matemik qiymatda yechilvchi teng karrali yechimi (n >> k) => n / 2^k ning butun qismi >>> operator >> shift right bilan deyarli bir xil lekin bunda ikkilik kod surilgan qiymatlar oldinga olib kelinadi Ya’ni: 105 >>> 1 => 1101001 1110100 va surilgan xolatdan keyingi natija 116 degan qiymatga keladi. Takrorlash operatorlari asosan 3 turga bo’linadi Bular: . For sikl operaotri => for(instalition; increment chegarasi yoki sikl toxtash sharti; increment) {/ tanasi/} While sikl opearatori => while(sikl toxtash sharti) {/tanas/i} Do While sikl operatori => do {/tanasi/} while(sikl to’xtash sharti); For sikl operaotrida sikl bajarilishing 3 ta qismi bo’ladi birinchi qism sikl boshida bajariluvchi keyin bajarilmaydigan Instalizatsiya yani boshlang’ich qiymat qismi, 2 qism sikl tanasi bajarilishiga tekshirluvchi shart yani ikrement chegarasi, 3 qism sikl tanasi bajarilgandan so’ng inkrement yani qiymat oshirluvchi qism bu yerda biz for(; ; ) qilib berilgan 3 qismni yozmasdan ketsak xam yoki biror qismini qoldirib ketsak xam xatolik bo’lmaydi lekin bu xolatni bajarib beradigan boshqa sikl opeartoro mavjud va u old shart sikl operatori while While sikl operaotri old shart sikl operaotri yani sikl oldin berilgan shart qanoatlantirilsa keyin sikl tanasibi bajaruvchi sikl opearatori va qachonki shart yolg’on yani false bo’lsa sikl toxtaydi true bo’lsa aksincha sikl tanasi bajarilishda davom etadi. Do while keyin shart sikl operatori yani birinchi sikl tanasi bajarilib keyin shartga tekshirluvchi shart operatori do while sikl operatorida sikl tanasi hech bo’lmagan bir marta bajariladi. Sikl operatorlarinig bajaradigon vazifasi deyarli bir xil vazifani bajarishadi qachon qaysi birisini ishlatishni o’zimiz xali qilamiz yani biz ishlayotga muhitga qarab mosini ishlatamiz. Masalan biror iteratsiya yani oshib boruvchi qiymatlar bilan ishlsak for siklini. Malum bir shat bajarilmaguncha davom etuvchi siklarda while sikl operatori. Siklni kamidan bir marta bajarib yani qandaydin qiymatni olib keyin uni tekshirib ishlatmoqchi bo’lsak do while sikl operatorini ishlatamiz. Javada massivlar reference toifalar turkumiga kiradi. Massiv Bu bir o’zgaruvchi orqali shu tipga ega bo’lgan bir nechta elementlarga murojat qilish imkoniyatini beruvchi toifa. Massivlar xotiradaning Heap deb nomlangan qismida ketma-ket ravishda joylashib joy saqlanadi. Va o’sha saqlangan joyning referensi stack xotirada saqlandi va biz o’sha referensga murojat qilib mos indeklar boyicha qimatlarni olishimiz mumkin bo’ladi. Java massivlar static xolatda saqlanadi yani aynan bir qattiy chegaraviy o’lchamda xotiradan joy ajaratiladi. Yani uning o’lchamini o’zgaritib bo’lmaydi ya’ni elementni qoshib massivni ol’chami ozgartib, element o’chirib o’lchamini o’zgaritib bo’lmaydi. Massivlar boshlang’ich qiymatlar bilan avtomatik ravishda instalizatsiya qilinadi va Premetiv toifada yaratilgan tipdagi numeric toifalar 0 bilan boolean toifalar false qiymat bilan char belgilar {/} shunga o’xshash belgi bilan. Reference toifalar null qiymat to’ldiriladi. Biz dasturlash muhitida Xotirani ikki qismga Stack Va Heap qismga bo’lib tassavur qilamiz. Lekin aslida kompyuterimizning xotirasi faqat tezkor xotira va doimiy xotira boriligini bilamiz va dasturlarimizni ishga tushursak bu tezkor xotiradan joy egalaydi. Javada Stack xotirada premetiv toifada yaratilgan o’zgaruvchilar saqlanadi va Heap hotirada esa reference toifalar saqlanadi. Classning azolari bu Class yaratilib {} block ochilib yopilguncha bo’lgan qismi xisoblanadi. Bularga Classning argumentlari yani uning maydonlari, Metodlari, Va Konstruktorlar..etc lar kiradi. Classning maydonlari biz class ichida yaratgan o’zgaruvhilar ya’ni Sting, int, boolean typelik ozgaruvchilardir va bu o’zgaruvchilar biz class dan obyekt olib xali qiymatlar bermagan vaqtimizida avtomatik instalizatsiya qilinadi yani premitiv toifalar 0 qiymat boolean false, reference toifalar null qiymatlar bilan yaratiladi. Metodlar esa biror bir funktisionalikni bajaruvchi codeblock qizmi bo’lib ximat qiladi bajarmasa xam bo’ladi. String Pool bu java tomonidan yaratilgan xotirani opltimal boshqarib turuvchi xotiraning qismi. String Pool bu Xotiraning Heap qismida joylashadi. Va o’ziga string belgilarni saqlaydi. Biz String belgili ketm-keltigiagi o’zgaruvchi “” ikkita o’zgaruvchilar orqali yaratganimiz bu String Pool da saqlanadi va bir xil qiymatli o’zgaruvchilar xotiradan yangi joy olib saqlanmaydi uning orniga o’sha yaratilgan joyning refensi beriladi aksincha agar bu o’zgaruvchi birinchi marta yaratilayotgan bo’lsa unga yaratib xotirada uning refence beriladi. Agar biz Stringni new kalit so’zi orqali yaratsak u String Pool da saqlanmaydi va u Heap dan alohida joyga yaratilib uning reference beriladi. Class maydoni va uning o’zgauvchilar bilan farqi deyarli yoq ular deyarli bir xil lekin biz o’zgaruvchilarni xar xil qiymatda saqlay olmaymiz Class maydonlarida esa bir nechta obyektlar orqali berilgan maydonlarni xar-hil qiymatlar orqali saqlay olamiz. Va yana Class maydi shu class ning ichida yaratilgan {} bosh blockdan tugash blockgacha oraliqgacha bo’lgan oraliqda yaratilgan argument(o’zgaruvchilardir). Int a = new [6]; header + N * (SizeType) + 4 + padding = ArraySize 8 + 6 * 4 + 4 + 4 = 40 Xotiradan 40 bayt joy egallaydi StringBuilder bu belgilar ketma-ketligian tashkil topgan reference toifa va xuddi Stringning vazifalariga o’xhash vazifalarni bajarib beradi. StringBuilderni Stringdan farqi U Dinamik ozgaruvchan va unig elementlari xotiradan joy olishi Stringdan farq qiladi Stringda bilsak u Imviudibl yani String o’zgarmas tipdagi belgilar massivi dep qaragndin va uning ustidan biror amalar bajarib yangi elemnt qo’shaman desa ayan o’sha xotirani uzaytirib qo’ymasti ya’ni xotiradan yangi joy yaratib o’zgariligan xolatni yanig xotiraga saqlab o’shani referencini bizga yuboradi. StringBuilder aynan o’sha xotiradagi joyni o’zgartiradi va uning olchamini qo’shib kamaytirsak bo’ladi va bu bizda ortiqcha xotiradan joy ajratishlardan qutqaradi. String toifada toLowerCase va toUpperCase methodlarida Local argumenti bu Ma’lum tillar bo’yicha katta va kichik harflarga o’girishdir biz ko’pincha bu qismiga axamiyat bermaymiz chunki biz ko’picha ingiliz alifbosidan foydalanganimiz uchun bu metodlarda esa default Ingiliz alifbosi bo’yicha katta va kichik xarflar o’zgartiladi. Masalan biz Arab alifbosini katta kichik qilmoqchi bo’lsak Locak qismiga araf alifbosi ekanligini aytib qo’yishimiz kerak. Shuning uchun xam 2 Stringni solishtirishda tolowoercase qilib solishtirish bilan equalsIgnoreCase metodalrida xar xil natijalar chiqadi. Premitive toifalarda type casting muhim ahamiyatga ega yani qachon kichik o’lchamli toifalardan katta o’lchamli toifalarga tenglashda bizda compiltsya qilishga bermaydi va xatolik beradi Va biz bu xolatda Type Cast qilish orqali muammoni xal qila olamiz Cast qilishda berilgan toifali o’zgaruvchi qaysi toifaga o’tkazmoqchi bo’lsak o’sha tipini yozib ketishim kerak bo’ladi Masalan: Int a = 10; Bayte b = (int)a; Shu xolatda amalga oshiraladi va yana bazi operatorlda cast qilishi shart bo’lmaydi masalan b += a; Qilsak ham avto cast bo’ladi bu java tenglab o’zlashtirish operatorlarida yozib chiqlgan. Katta toifadan kichik toifaga tenglashda xatolik yuzaga kelmayid Chunki java bu loatlar defalt ko’rib chiqilgan. Download 20.91 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling