Java haqidagi boshlang’ich savol-javoblar.
❓Savol: Java baytkod nima?
❗️ Javob: Java Virtual mashina(JVM-java virtual machine)da ishlaydigan dasturning quyi darajadagi versiyasi(low-level version) yoki mashina tili desa ham bo’ladi. Bu baytkodlar orqali Java dasturlarining har qanday qurilmalarda ishlay olishini ta’minlaydi. Java dasturchilar bu baytkod haqida tushunishi yoki xabardor bo’lib turishi muhim emas.
❓Savol: Java tilinig «int» tipi uchun berilgan chegaradan oshib ketadigan(overflow) yoki noto’g’ri qiymatning berilishi noto’g’ri tuyuladi. Javani o’zi overflow(chegaradan ochib ketishi) uchun avtomatik tekshirishi kerak emasmidi?
❗️ Javob: Bu muommo(issue) dasturchilar orasida ham bahsli muommodir. Qisqa javob — bunaqa tekshirish yuqligini bir sababi bunaqa tiplar(int) primitive tip deb nomlanishidir. Shuni bilim(ya’ni primitive tip ekanligini bilish)ning o’zi ham yuqoridagi muommoga duch kelmaslikka olib keladi. Biz «int» tipini kichik raqamlar uchun ishlatamiz va «long» tipini milliardlar yoki undan yuqorilari uchun ishlatamiz.
❗️❗️Eslatma:
Overflow — int tipida Integer.MAX_VALUE (2147483647) dan 1 ta oshsa -2147483648 ga teng bo’ladi ya’ni Integer.MIN_VALUE ga teng.
Underflow — Bu Overflowning aksi, Integer.MIN_VALUE dan 1 ga kamaysa (minus tomonga qarab oshsa), Integer.MAX_VALUE ga teng bo’ladi.
Butun-bo’lmagan(non-integer) ma’lumot tiplari uchun, Overflow va Underflow natijalari INFINITY(cheksiz) va ZERO(0-nul) qiymatlari bo’ladi. Buni ko’rmoqchi bo’lsangiz, quyidagini sinab ko’ring:
float f = 3.4028235E38f * 20f;
System.out.println(f);
❓Savol: Math.abs(-2147483648) ning qiymati qanaqa bo’ladi?
❗️ Javob: -2147483648 bo’ladi. Bu g’alati(lekin haqiqat) natija «integer overflow»(integerning chegarasidan oshib ketishi)ning ta’sirining oddiy misoli.
❓Savol: «double» tipidagi o’zgaruvchiga qanday qilib cheksiz(Infinity) qiymati o’zlashtiriladi?
❗️ Javob: Javada bu maqsad uchun o’rnatilgan konstantalar(constant) mavjud: Double.POSITIVE_INFINITY va Double.NEGATIVE_INFINITY (ya’ni Musbat cheksizlik va Mangiy cheksizlik).
❓Savol: «double» va «int» tiplarini solishtira olasizmi?
❗️ Javob: Tiplarni bir-biriga aylantirmasdan qilish mumkin, lekin eslab qoling, odatda Java zarur tip aylantirishlarni avtomatik tarzda qiladi:
Misol uchun: agar x «int» tipidagi 3 qiymati bilan o’rnatilgan bo’lsa, keyin (x
❓Savol: Agar o’zgaruvchini unga qiymat bermasdan avval ishlatadigan bo’lsam nima sodir bo’ladi?
❗️ Javob: Java compayl vaqtida(compile-time) xato tashlaydi.
❓Savol:1/0 va 1.0/0.0(1ni 0ga bo’lsa) kabi Java ifodalari qanaqa qiymat qaytaradi?
❗️ Javob: 1-si dastur ishlab turganda xato(runtime exception) tashlaydi 0 ga bo’lingani uchun(«division by zero», bu xato dasturingizni to’xtatib qo’yadi). 2-si cheksiz(«Infinity») qiymat qaytaradi.
❓Savol: «String» tipidagi o’zgaruvchilarni taqqoslash uchun «>» va «
❗️ Javob: Yo’q. Bu operatorlar faqat primitive tiplari uchundir.
❓Savol: Manfiy butun sonlarning bo’linmasi va qoldig’ini topish qanaqa bo’ladi?
❗️ Javob: a/b bo’linma natijasi yaxlitlanadi(ya’ni 2.5 => 2). a % b qoldiqni topish ifodasi quyidagi tavsiflasa bo’ladi:
‘(a / b) * b + a % b’ ifoda har doim a ga teng bo’ladi.
Misol uchun:
-14/3 va 14/-3 ikkalasi ham -4 ga teng.
Lekin, -14 % 3 -2 ga va 14 % -3 esa 2 ga teng.
Manba:
Algoritm
Java haqidagi boshlang’ich savol-javoblar.