1. Обзор
Язык программирования Java содержит восемь примитивных типов данных.
В этой статье мы вспомним, что такое примитивы, и рассмотрим их.
2. Примитивные Типы Данных
Восемь примитивов, определенных в Java, – это int , byte , short , long , float , double , boolean и char – они не считаются объектами и представляют собой необработанные значения.
Они хранятся непосредственно в стеке (проверьте эту статью для получения дополнительной информации об управлении памятью в Java).
Давайте рассмотрим размер хранилища, значения по умолчанию и примеры использования каждого типа.
Давайте начнем с краткой справки:
байт | байт; | 27– 1 | -27 | 8 |
короткий | короткий; | 215– 1 | -215 | 16 |
инт | инт; | 231– 1 | -231 | 32 |
длинный | длинный; | 263– 1 | -263 | 64 |
плыть | поплавок.456f; | (2-2-23)·2127 | -2-149 | 32 |
двойной | двойной номер 456789012345678; | (2-2-52)·21023 | -2-1074 | 64 |
обуглить | обуглить; | 216– 1 | 0 | 16 |
логический | логический; | – | – | 1 |
2.1. int
Первый примитивный тип данных, который мы рассмотрим, – это int . Также известный как целое число, тип int содержит широкий диапазон значений не дробных чисел.
В частности, Java хранит его, используя 32 бита памяти . Другими словами, он может представлять значения от -2,147,483,648 (-2 31 ) к 2,147,483,647 (2 31 -1).
В Java 8 можно хранить целочисленное значение без знака до 4,294,967,295 (2 32 -1) с помощью новых специальных вспомогательных функций.
Мы можем просто объявить int просто:
int x = 424_242; int y;
Значение по умолчанию инт объявлено без присвоения равно 0.
Если переменная определена в методе, мы должны присвоить ей значение, прежде чем использовать ее.
Мы можем выполнять все стандартные арифметические операции над int s. Просто имейте в виду, что десятичные значения будут обрезаны при выполнении их на целых числах.
2.2. байт
byte – это примитивный тип данных , подобный int , за исключением того, что он занимает только 8 бит памяти . Таким образом, почему мы называем его байтом. Поскольку размер памяти настолько мал, byte может содержать только значения от -128 (-2 7 ) к 127 (2 7 – 1).
Мы можем создать байт :
byte b = 100; byte empty;
Значение по умолчанию байт также равно 0.
2.3. короткие
Следующая остановка в нашем списке примитивных типов данных в Java-это short .
Если мы хотим сохранить память и byte слишком мал, мы можем использовать тип на полпути между ними: short .
При 16 битах памяти он вдвое меньше int и вдвое больше byte . Его диапазон возможных значений составляет -32 768(-2 15 ) к 32,767(2 15 – 1).
short объявляется следующим образом:
short s = 202_020; short s;
Также, как и для других типов, значение по умолчанию равно 0. Мы также можем использовать всю стандартную арифметику.
2.4. длинные
Наш последний примитивный тип данных, связанный с целыми числами, – это long .
long является старшим братом int . Он хранится в 64 битах памяти поэтому он может содержать значительно больший набор возможных значений.
Возможные значения along находятся в пределах -9,223,372,036,854,775,808 (-2 63 ) к 9,223,372,036,854,775,807 (2 63 – 1).
Мы можем просто объявить один:
long l = 1_234_567_890; long l;
Как и в случае с другими целочисленными типами, значение по умолчанию также равно 0. Мы можем использовать всю арифметику на long , которая работает на int .
2.5. поплавок
Мы представляем основные дробные числа в Java с помощью типа float . Это десятичное число с одинарной точностью. Это означает, что если мы пройдем через шесть десятичных знаков, это число станет менее точным и более приблизительным.
В большинстве случаев мы не заботимся о потере точности. Но, если наши расчеты требуют абсолютной точности (например, финансовые операции, высадка на Луну и т. д.), нам нужно использовать конкретные типы, предназначенные для этой работы. Для получения дополнительной информации ознакомьтесь с классом Java BigDecimal .
Этот тип хранится в 32 битах памяти точно так же, как int . Однако из-за плавающей десятичной точки его диапазон сильно отличается. Он может представлять как положительные, так и отрицательные числа. Наименьшее десятичное число равно 1,40239846 x 10 -45 , а самое большое значение-3.40282347 x 10 38 .
Мы объявляем float s таким же, как и любой другой тип:
float f = 3.145f; float f;
И значение по умолчанию-0.0 вместо 0 . Кроме того, обратите внимание, что мы добавляем обозначение f в конец буквального числа, чтобы определить поплавок. В противном случае Java выдаст ошибку, поскольку тип десятичного значения по умолчанию – double .
Мы также можем выполнять все стандартные арифметические операции над float s. Однако важно отметить, что мы выполняем арифметику с плавающей запятой совсем иначе, чем целочисленную арифметику.
2.6. двойной
Далее мы рассмотрим double – его название происходит от того, что это десятичное число двойной точности.
Он хранится в 64 битах памяти. Что означает, что он представляет собой гораздо больший диапазон возможных чисел, чем float .
Хотя он страдает от того же ограничения точности, что и float . Диапазон составляет 4,9406564584124654 x 10 -324 до 1.7976931348623157 x 10 308 . Этот диапазон также может быть положительным или отрицательным.
Объявление double – это то же самое, что и другие числовые типы:
double d = 3.13457599923384753929348D; double d;
Значение по умолчанию также равно 0.0, как и в случае с float. Аналогично float, мы прикрепляем букву D для обозначения литерала как двойника.
2.7. булево
Простейшим примитивным типом данных является boolean . Он может содержать только два значения: true или false . Он хранит свое значение в одном бите.
Однако для удобства Java заполняет значение и сохраняет его в одном байте.
Объявите boolean вот так:
boolean b = true; boolean b;
Объявление его без значения по умолчанию false . boolean является краеугольным камнем управления потоком наших программ. Мы можем использовать на них булевы операторы (например, и, или, и т. Д.).
2.8. char
Последний примитивный тип данных для просмотра-это char .
Также называемый символом, char представляет собой 16-битное целое число, представляющее символ в кодировке Unicode. Его диапазон составляет от 0 до 65 535. Который в Юникоде представляет собой ‘\u0000’ to ‘\uffff’ .
Список всех возможных значений Unicode можно найти на таких сайтах, как Unicode Table .
Давайте теперь объявим a char :
char c = 'a'; char c = 65; char c;
При определении наших переменных мы можем использовать любой символьный литерал, и они автоматически преобразуются для нас в свою кодировку Unicode. Значение по умолчанию для символов равно ‘/u0000’.
2.9. Переполнение
Примитивные типы данных имеют ограничения по размеру. Но что произойдет, если мы попытаемся сохранить значение, которое больше максимального?
Мы столкнулись с ситуацией под названием переполнение .
Когда целое число переполняется, оно переходит к минимальному значению и начинает отсчет оттуда.
Переполнение чисел с плавающей запятой путем возврата бесконечности. Когда они уменьшаются, они возвращают 0.0.
Вот пример:
int i = Integer.MAX_VALUE; int j = i + 1; // j will roll over to -2_147_483_648 double d = Double.MAX_VALUE; double o = d + 1; // o will be Infinity
Underflow – это та же проблема, за исключением тех случаев, когда мы храним значение меньше минимального.
2.10. Автобоксинг
Каждый примитивный тип данных также имеет полную реализацию класса Java, которая может обернуть его. Например, класс Integer может обернуть int . Иногда возникает необходимость преобразовать примитивный тип в его объектную оболочку (например, используя их с generics ).
К счастью, Java может выполнить это преобразование для нас автоматически. Мы называем этот процесс Автобоксингом . Вот пример:
Character c = 'c'; Integer i = 1;
3. Заключение
В этом уроке мы рассмотрели восемь примитивных типов данных, поддерживаемых в Java.
Это строительные блоки, используемые большинством, но не всеми программами Java, поэтому стоит понять, как они работают.