1-modul · 2-dars: Data Types
Daraja: Boshlang'ich
Data Types. Java Core bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Data Types tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Kompilyator uchun kodning eng kichik ma'noli birligi: keyword, identifier, literal, operator yoki separator.
Kompilyatsiya qilinadigan bitta manba fayl (`.java`) — kompilyatorga kiruvchi bir butun birlik.
## Intervyuga tayyorgarlik ### Token nima? Kompilyator uchun kodning eng kichik ma'noli birligi: keyword, identifier, literal, operator yoki separator.
### Translation unit nima? Kompilyatsiya qilinadigan bitta manba fayl (`.java`) — kompilyatorga kiruvchi bir butun birlik.
### Java-da tokenlarning nechta type mavjud? 5 ta: Keywords, Identifiers, Literals, Operators, Separators (punctuators).
### Character Set nima? Java qo'llab-quvvatlaydigan belgilar to'plami. Java ichki tarzda Unicode dan foydalanadi.
### Identifiers nima va qoidalari? O'zgaruvchi, method, class kabilarga berilgan nom. Qoidalar: harf, `_` yoki `$` bilan boshlanadi; raqam bilan boshlanmaydi; keyword bo'lolmaydi; bo'shliq yo'q; katta-kichik harfga sezgir (case-sensitive).
### Java-da nechi xil turdagi comment bor? 3 xil: bir qatorli `//`, ko'p qatorli `/* */`, va hujjat (Javadoc) `/** */`.
### Java-da nechta keyword bor? 50 ta reserved keyword bor (shundan `goto` va `const` zaxiralangan, lekin ishlatilmaydi). Bularga qo'shimcha kontekstual so'zlar ham mavjud.
### Java-da nechta turdagi variable mavjud? 3 turda: local (method ichida), instance (obyektga tegishli non-static field), va static (class-level) o'zgaruvchi.
### Primitive type bilan non-primitive nima farqi bor? Primitive — oldindan belgilangan, qiymatni bevosita saqlaydi, null bo'lolmaydi, 8 ta. Non-primitive (reference) — obyektga havola saqlaydi, null bo'lishi mumkin, method va field larga ega.
### Variable scope nima? O'zgaruvchi ko'rinadigan va undan foydalanish mumkin bo'lgan kod hududi.
### Java-da qancha scope mavjud? Asosan uchta: class-level (instance/static), method-level (local), va block-level.
### Java-ning nechinchi versiyasidan Scanner qo'shilgan? Java 5 (JDK 1.5) dan.
### Scanner class qanday resurslardan o'qiy oladi? `System.in` (klaviatura), fayl (`File`/`Path`), `String` va boshqa `Readable` manbalardan.
### Java-da nechi xil turdagi data type bor? 2 asosiy: primitive (8 ta) va non-primitive/reference (class, interface, array, String...).
### Scanner bug nima? `nextInt()` dan keyin `nextLine()` ishlatilganda, buferdagi newline (`\n`) qolib ketadi va `nextLine()` bo'sh qiymat o'qiydi. Yechim: qo'shimcha `nextLine()` chaqirish.
### Console class nima? Konsol (terminal) bilan matn o'qish/yozish uchun class (`System.console()`). Ayniqsa parolni yashirin o'qish (`readPassword`) uchun ishlatiladi.
### Java-ning nechinchi versiyasida Console taqdim etilgan? Java 6 dan.
### Scanner va Console o'rtasidagi farq? Scanner turli manbalardan o'qiydi va qiymatni parse qiladi. Console faqat konsol bilan ishlaydi, IDE da ko'pincha `null` qaytaradi, lekin parolni ekranga chiqarmasdan o'qiy oladi.
### Scanner class va undan foydalanish `Scanner sc = new Scanner(System.in);` yaratiladi, so'ng `sc.nextInt()`, `sc.nextLine()`, `sc.nextDouble()` kabi methodlar bilan ma'lumot o'qiladi. Oxirida `sc.close()`.
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/1-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
int age = 20;
long population = 8_000_000_000L;
double average = 5 / 2.0;
boolean adult = age >= 18;
System.out.println(average); // 2.5
Keng tarqalgan xatolar
- `int` va `Integer` ni bir xil deb ishlatish: `Integer` null bo'la oladi va unboxing paytida NPE beradi.
- O'zgaruvchini blok ichida e'lon qilib, blokdan tashqarida ishlatishga urinish.
Mashqlar
- Har bir primitive tur uchun eng katta va eng kichik qiymatni (`Integer.MAX_VALUE` kabi) chop eting.
- `int a = 5; a = a + 0.5;` ni yozib ko'ring va kompilyator nima deyishini tushuntiring.
Teglar: modul-01, nazariya, pdp