# Примитивни типове данни

**Типа данни** определя стойностите, които една променлива може да съхранява, например ако дадена променлива има тип данни INT, тя може да съхранява само цели стойности. В java имаме две категории типове данни:&#x20;

1\) Примитивни типове данни&#x20;

2\) Непримитивни типове данни – Масиви и Низове са непримитивни типове данни.

Java е статично типизиран език. Статично типизиран език, е такъв в който типът данни на променлива е известен в етапа на компилиране. Това означава, че трябва да декларирате променливата, преди да можете да я използвате.

```
int num;
```

Така че, за да се използва променливата num, трябва да я обявим първо, както е показано по-горе. Добра програмна практика е да декларирме променливите ( които ще използваме) в момента в който са ни необходими.

### 1) Примитивни типове данни

В Java имаме осем примитивни типа данни: boolean, char, byte, short, int, long, float and double.&#x20;

&#x20;**byte**, **short**, **int** и **long** са типове данни за съхранение на цели номера.

&#x20;**float** и **double** се използват за дробни числа.

**char** се използва за съхраняване на знаци(букви).

&#x20;**boolean** е тип данни който се използва за променливи, които съхраняват или вярно, или невярно.

#### byte:

Той може да съхранява цяло число между -128 и 127. Най-вече се използва за запазване на паметта и когато сте сигурни, че числата биха били в лимита, зададен от типа байт данни.\
Размер по подразбиране на този тип данни: 1 байт.\
Стойност по подразбиране: 0\
\
Пример:

```
class JavaExample {
    public static void main(String[] args) {
    	
    	byte num;
    	
    	num = 113;
    	System.out.println(num);
    }
}
```

Изход:

```
113
```

> Опитайте същата програма, като присвоите стойност присвояване на 150 стойност променлива num, бихте се получила грешка **несъответствие** на типа, защото стойността 150 е извън диапазона на тип байт. Обхватът на байта, както споменах по-горе, е -128 до 127.

#### Short:

Това е по-голямо от байта по отношение на размера и по-малко от int число. Обхватът му е -32,768 до 32767.\
Размер по подразбиране на този тип данни: 2 байта

```
short num = 45678;
```

**int**: ‎Използва се, когато short не е достатъчно голям, за да съхранява номера, той има по-широк диапазон:‎ -2,147,483,648 to 2,147,483,647\
Размер по подразбиране на този тип данни: 4 байта\
Стойност по подразбиране: 0\
Пример:

```
class JavaExample {
    public static void main(String[] args) {
    	
    	short num;
    	
    	num = 150;
    	System.out.println(num);
    }
}
```

Изход:

```
150
```

Типът данни на байта не можа да задържи стойността 150, но кратък тип данни може, защото има по-широк диапазон.

### long:

Използва се, когато int не е достатъчно голям, за да съхранява стойността, той има по-широк обхват от типа INT, вариращ от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.\
размер: 8 байта\
Стойност по подразбиране: 0\
\
Пример:

```
class JavaExample {
    public static void main(String[] args) {
    	
    	long num = -12332252626L;
    	System.out.println(num);
    }
}
```

Изход:

```
-12332252626
```

&#x20;**double**: Достатъчно за съхранение на числа с 15 десетични цифри\
\
размер: 8 байта&#x20;

Пример:

```
class JavaExample {
    public static void main(String[] args) {
    	
    	double num = -42937737.9d;
    	System.out.println(num);
    }
}
```

Изход:

```
-4.29377379E7
```

&#x20;**float**: Достатъчна за държане от 6 до 7 десетични цифри&#x20;

размер: 4 байта

```
class JavaExample {
    public static void main(String[] args) {
    	
    	float num = 19.98f;
    	System.out.println(num);
    }
}
```

Изход:

```
19.98
```

&#x20;**boolean**: държи или вярно за невярно.

```
class JavaExample {
    public static void main(String[] args) {
    	
    	boolean b = false;
    	System.out.println(b);
    }
}
```

Изход:

```
false
```

**char**: държи знаци.\
размер: 2 байта

```
class JavaExample {
    public static void main(String[] args) {
    	
    	char ch = 'Z';
    	System.out.println(ch);
    }
}
```

Изход:

```
Z
```

### Литерали в Java

Литерала е фиксирана стойност, която присвояваме на променлива в програма.

```
int num=10;
```

Тук стойност 10 е литерал на цяло число.

```
char ch = 'A';
```

Тук А е литерал на char

#### Литерали на цяло число

Целочислените литерали се присвояват на променливите от типа данни  `byte`, `short`, `int` и`long`.

```
byte b = 100;
short s = 200;
int num = 13313131;
long l = 928389283L;
```

#### Литерали на десетично исло

Използва се за тип данни  `float` и`double`

```
double num1 = 22.4;
float num2 = 22.4f;
```

Забележка: наставката "f" означава че типа да литерала е `float` по подразбиране литерала ще е от тип `double`

#### Личерали символи и текст

Използва се за тип char и String.

```
char ch = 'Z';
String str = "BeginnersBook";
```


---

# Agent Instructions: 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://programmingfundamental.gitbook.io/programmingwithjava/obektno-orientirano-programirane-1-chast/laboratorno-uprazhnenie-1/primitivni-tipove-danni.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.
