> For the complete documentation index, see [llms.txt](https://programmingfundamental.gitbook.io/programmingwithjava/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://programmingfundamental.gitbook.io/programmingwithjava/obektno-orientirano-programirane-1-chast/laboratorno-uprazhnenie-1/primitivni-tipove-danni.md).

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

**Типа данни** определя стойностите, които една променлива може да съхранява, например ако дадена променлива има тип данни 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";
```
