— Привет, Амиго!
— Привет, Риша!
— Ты уже изучил основы синтаксиса Java, поэтому я хочу рассказать тебе некоторые вещи более углубленно.
— Сегодня я расскажу тебе немного про примитивные типы, а также — сколько памяти они занимают. Тебе это пригодится и, возможно, даже сегодня. Вот эти типы:
Тип | Размер, байт |
Диапазон значений | Значение по умолчанию | Описание |
---|---|---|---|---|
byte | 1 | -128 .. 127 | 0 | Самое маленькое целое — один байт |
short | 2 | -32,768 .. 32,767 | 0 | Короткое целое, два байта |
int | 4 | — 2*109 .. 2*109 | 0 | Целое число, 4 байта |
long | 8 | — 9*1018 .. 9*1018 | 0L | Длинное целое, 8 байт |
float | 4 | -10127 .. 10127 | 0.0f | Дробное, 4 байта |
double | 8 | -101023 .. 101023 | 0.0d | Дробное, двойной длины, 8 байт |
boolean | 1 | true, false | false | Логический тип (только true & false) |
char | 2 | 0..65,535 | ‘\u0000 ‘ | Символы, 2 байта, все больше 0 |
Object | 4 | Любая ссылка или null. | null | Хранит ссылки на объекты типа Object или классов наследников |
— Давай я остановлюсь на каждом типе подробнее.
— Тип byte – это самый маленький тип целых чисел. Каждая переменная этого типа занимает всего один байт памяти, поэтому он может хранить значения в диапазоне от -128 до 127.
— А зачем такой маленький тип нужен. Почему нельзя везде использовать int?
— Можно. Но если ты создаешь очень большие массивы, и тебе не нужно хранить там значения больше 100, то почему бы не воспользоваться таким типом. Так ведь?
— Тип short – ровно в два раза длиннее типа byte и тоже хранит только целые числа. Самое большое число, которое в него вмещается – это 32767. Самое большое отрицательное число – это -32768.
— Тип int ты уже знаешь. Он может хранить целые числа до двух миллиардов, как положительные, так и отрицательные.
— Тип float – создан для хранения вещественных (дробных) чисел. Его размер 4 байта.
— Все дробные числа хранятся в памяти в очень интересной форме.
— Например, число 987654.321 можно представить как 0.987654321*106. Поэтому в памяти оно будет представлено как два числа «0.987654321» (мантисса — значащая часть числа) и «6» (экспонента — степень десятки)
— А зачем так сделано?
— Такой подход позволяет хранить гораздо большие числа, чем int, используя всего 4 байта. Но при этом мы жертвуем точностью. Часть памяти расходуется на хранение мантиссы, поэтому такие числа хранят всего 6-7 знаков после запятой, остальные отбрасываются.
—Такие числа еще называют «числа с плавающей запятой» или «числа с плавающей точкой (floating point number)». Отсюда, кстати, и название типа – float.
— Ясно.
— Тип double – это такой же тип, как и float, только в два раза длиннее – он занимает восемь байт. (double – двойной, по-английски). И предельный размер мантиссы и количество значащих цифр в нем больше. Если тебе нужно хранить вещественные числа – старайся использовать именно этот тип.
— Тип char – гибридный тип. Его значения можно интерпретировать и как числа (их можно складывать и умножать) и как символы. Так было сделано потому, что хоть символы и имеют визуальное представление, для компьютера они в первую очередь просто числа. И работать с ними как с числами гораздо удобнее. Тут еще есть одно замечание: тип char строго положительный – отрицательных значений он хранить не может.
— Тип boolean – логический тип и может хранить всего два значения: true (истина) и false(ложь).
— Тип Object, хоть и представлен в таблице, примитивным типом не является. Это базовый класс для всех классов в Java. Во-первых, все классы считаются унаследованными от него, а значит, содержат его методы. А во-вторых, ему можно присваивать ссылки на объекты любого типа. В том числе и null – пустую ссылку.
— Узнал очень много нового. Спасибо за урок, Риша