> For the complete documentation index, see [llms.txt](https://java.zikrulla.uz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://java.zikrulla.uz/2-ozgaruvchilar-malumot-turlari-va-operatorlar.md).

# #2 O'ZGARUVCHILAR, MA'LUMOT TURLARI VA OPERATORLAR

Mehribon va rahimli Alloh nomi bilan foydali ilm o'rganish niyatida boshlaymiz.

Ushbu darsda Java dasturlash tilida ma'lumotlarni xotirada saqlash, konsoldan ma'lumotlarni kiritish-chiqarish va ular ustida asosiy arifmetik hamda mantiqiy amallarni bajarishni o'rganamiz. Bu tushunchalar standart masalalar to'plamini (Kiritish-chiqarish, Integer, Boolean) muvaffaqiyatli yechish uchun poydevor hisoblanadi.

{% embed url="<https://youtu.be/UVM7Ep-WUfg>" %}

### 1. Java-da Ma'lumot Turlari va O'zgaruvchilar

Java — qat'iy tiplashtirilgan (*strongly typed*) til. Bu degani, har bir o'zgaruvchi e'lon qilinayotganda uning turi aniq ko'rsatilishi shart. Java-da ma'lumot turlari ikkita katta guruhga bo'linadi: Primitiv va Ssilkali (Reference).

#### 💡 Primitiv va Reference turlarning farqi nimada?

Tasavvur qiling, sizga pul kerak.

* Primitiv tur — bu cho'ntagingizdagi naqd pul. Siz uni to'g'ridan-to'g'ri o'zingiz bilan olib yurasiz. Kompyuter xotirasida (Stack) ham primitiv turlar qiymatning o'zini to'g'ridan-to'g'ri saqlaydi (masalan: `5`, `true`).
* Reference tur — bu sizning bank kartangiz yoki seyfning kaliti. Kartaning ichida pul yo'q, u shunchaki bankdagi hisob raqamingizga (manzilga) yo'llanma (ssilka) beradi. Kompyuter xotirasida ham Reference turlar (masalan, `String` yoki obyektlar) ma'lumotning o'zini emas, u joylashgan xotira manzilini saqlaydi.

Hozircha asosiy primitiv turlarni ko'rib chiqamiz:

| **Ma'lumot turi** | **Tavsifi**                       | **Hajmi** | **Standart qiymati** | **Misol**                        |
| ----------------- | --------------------------------- | --------- | -------------------- | -------------------------------- |
| `byte`            | Butun sonlar                      | 1 bayt    | `0`                  | `byte b = 100;`                  |
| `int`             | Standart butun sonlar             | 4 bayt    | `0`                  | `int age = 25;`                  |
| `long`            | Katta butun sonlar                | 8 bayt    | `0L`                 | `long population = 8000000000L;` |
| `float`           | Haqiqiy sonlar                    | 4 bayt    | `0.0f`               | `float price = 12.5f;`           |
| `double`          | Yuqori aniqlikdagi haqiqiy sonlar | 8 bayt    | `0.0d`               | `double pi = 3.1415926535;`      |
| `char`            | Bitta belgi (Unicode)             | 2 bayt    | `'\u0000'`           | `char grade = 'A';`              |
| `boolean`         | Mantiqiy qiymat                   | 1 bit     | `false`              | `boolean isActive = true;`       |

### 2. Kiritish-Chiqarish Oqimlari va O'zlashtirish (Begin 1-40)

Bu bo'lim Kiritish-chiqarish va o'zlashtirish (1-40) masalalarini yechish mexanizmini tushuntiradi. Mazkur masalalarda asosan chiziqli algoritmlar — ma'lumotni qabul qilish, formula yordamida hisoblash va natijani chiqarish bajariladi.

* `System.out.print()` yoki `System.out.println()` — ma'lumotni konsolga chiqarish uchun.
* `java.util.Scanner` — konsoldan ma'lumotlarni o'qish (kiritish) uchun eng qulay klass.
* `=` — o'zlashtirish operatori. O'ng tarafdagi qiymatni chap tarafdagi o'zgaruvchiga yozadi.

#### Kod namunasi:

To'g'ri to'rtburchakning tomonlari $$a$$ va $$b$$ berilganda uning yuzasi $$S = a \cdot b$$ va perimetri $$P = 2 \cdot (a + b)$$ ni hisoblash dasturi:

```java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // Scanner obyektini yaratamiz
        Scanner scanner = new Scanner(System.in);

        System.out.print("a va b tomonlarini kiriting: ");
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();

        // Hisoblash va o'zlashtirish
        double S = a * b;
        double P = 2 * (a + b);

        // Natijani chiqarish
        System.out.println("Yuzasi: " + S);
        System.out.println("Perimetri: " + P);
    }
}
```

### 3. Butun Sonlarga Oid Amallar (Integer 1-30)

Bu bo'lim Butun sonlarga oid (1-30) masalalarni yechish uchun kalit hisoblanadi. Java-da ikkita butun son bir-biriga bo'linganda natija ham butun son bo'ladi. Xonalar bilan ishlashda ikkita asosiy operator bor:

1. `/` — Butun sonli bo'lish: Bo'linmaning faqat butun qismini qaytaradi (qoldiq tashlab yuboriladi).
2. `%` — Qoldiqli bo'lish (Modulo): Bo'lishdan ortib qolgan qoldiqni qaytaradi.

#### Raqamlarni ajratish texnikasi:

Masalalarning asosiy qismi sonning raqamlar yig'indisi, teskari tartibi yoki xonalarini almashtirishga qaratilgan.

* Sondan birlar xonasini (oxirgi raqamini) ajratib olish: `son % 10`
* Sondan oxirgi raqamni o'chirib tashlash: `son / 10`
* Uch xonali sondan yuzlar xonasini ajratish: `son / 100`

#### Kod namunasi:

Berilgan uch xonali sonning raqamlar yig'indisini topish dasturi:

```java
import java.util.Scanner;

public class IntegerTask {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Uch xonali son kiriting: ");
        int son = scanner.nextInt(); // Masalan: 358

        int yuzlar = son / 100;       // 358 / 100 = 3
        int onlar = (son / 10) % 10;  // 358 / 10 = 35 -> 35 % 10 = 5
        int birlar = son % 10;        // 358 % 10 = 8

        int yigindi = yuzlar + onlar + birlar;

        System.out.println("Raqamlari yig'indisi: " + yigindi);
    }
}
```

### 4. Mantiqiy Amallar (Boolean 1-30)

Mantiqiy amallar (1-30) bo'limidagi barcha masalalarning javobi `boolean` turida, ya'ni `true` (rost) yoki `false` (yolg'on) bo'lishi talab qilinadi.

#### Taqqoslash operatorlari:

* `==` (tengmi?), `!=` (teng emasmi?)
* `>`, `<`, `>=`, `<=` (katta, kichik, katta-teng, kichik-teng)

#### Mantiqiy operatorlar (Bog'lovchilar):

Bir nechta shartlarni birlashtirish uchun quyidagi operatorlardan foydalaniladi:

| **Operator** | **Java-dagi yozilishi** | **Tavsifi**                                         |
| ------------ | ----------------------- | --------------------------------------------------- |
| AND (Va)     | `&&`                    | Barcha shartlar `true` bo'lsagina `true` qaytaradi. |
| OR (Yoki)    | `\|\|`                  | Kamida bitta shart `true` bo'lsa `true` qaytaradi.  |
| NOT (Emas)   | `!`                     | Qiymatni teskarisiga o'zgartiradi.                  |

#### Kod namunasi:

Berilgan $$A$$ va $$B$$ sonlarining kamida bittasi toq son ekanligini tekshirish dasturi:

```java
import java.util.Scanner;

public class BooleanTask {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("A va B sonlarini kiriting: ");
        int A = scanner.nextInt();
        int B = scanner.nextInt();

        // Kamida bittasi toq bo'lish sharti
        boolean shart = (A % 2 != 0) || (B % 2 != 0);

        System.out.println("Kamida bittasi toqmi: " + shart);
    }
}
```

### 📝 Uy Vazifasi: Amaliyot

O'rganilgan mavzularni mustahkamlash uchun Qudrat Abdurahimovning "C++ dasturlash tili" (yoki elektron masalalar to'plami) kitobidan quyidagi bo'limlarni Java tilida ishlab kelish:

1. Begin (Kiritish-chiqarish va o'zlashtirish): 1 dan 40 gacha bo'lgan barcha masalalar.
2. Integer (Butun sonlarga oid): 1 dan 30 gacha bo'lgan barcha masalalar.
3. Boolean (Mantiqiy amallarga oid): 1 dan 30 gacha bo'lgan barcha masalalar.

*Maslahat: Har bir bo'lim uchun IDE da alohida papka (Package) oching va masalalarni tartib bilan raqamlab ishlang. Bu keyinchalik kodlaringizni topishni osonlashtiradi.*

***

🌐 **Dars muallifi:** [Zikrulla Yashinov](https://zikrulla.uz) | Boshqa loyihalar va bog'lanish uchun


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://java.zikrulla.uz/2-ozgaruvchilar-malumot-turlari-va-operatorlar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
