# Типы данных

В Java существуют следующие базовые типы данных:

| Тип данных | Объем занимаемой памяти | Диапазон значений                    | Значение по умолчанию |
| ---------- | ----------------------- | ------------------------------------ | --------------------- |
| byte       | 1 байт                  | Целые числа -128 : 127               | 0                     |
| short      | 2 байта                 | Целые числа -32768 : 32767           | 0                     |
| int        | 4 байта                 | Целые числа -2147483648 : 2147483647 | 0                     |
| long       | 8 байт                  | Целые числа -2^63 : 2^63             | 0L                    |
| float      | 4 байта                 | Вещественные 1.4e-45 : 3.4e+38       | 0.0f                  |
| double     | 8 байт                  | Вещественные 4.9e-324 : 1.8e+308     | 0.0d                  |
| char       | 2 байта                 | Натуральные 0:65535                  | '\u0000'              |
| boolean    | 1 байт (минимум)        | false или true                       | false                 |

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

Автоматическое (неявное) приведение типов

```
int a = 5;
int b = 10;
double c = a + b;
```

Внимание!

```
byte x = 2;
byte y = x + 2;
```

Выдаст ошибку, т.к. неявное приведение типов к менее точному не работает.

Ручное (явное) приведение типов

```
double a = 3.5;
int b = (int) a;
```

С учетом этого приведем рассмотренный ранее пример к рабочему виду

```
byte x = 2;
byte y = (byte) (x + 2);
```

Вопрос 1.

Для чего нужна типизация данных? Какой цели служит разграничение различных типов данных?

Вопрос 2.

Какой тип данных лучше использовать, для хранения числового значения, которое по логике программы не сможет быть больше 100? Почему?

Вопрос 3.

Как вы думаете, почему неявное приведение типов работает только в одном направлении — от менее точных к более точным типам?

Рассмотрите следующий пример:

```
double a = 17.6;
double b = 14.8;

int c = (int)(a + b);
int d = (int)a + (int)b;
```

Какие значения будут присвоены переменным c и d? Почему?


---

# 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://comaqa.gitbook.io/java-automation/yazyk-java.-osnovy/tipy-dannykh.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.
