Введение в примитивы Java

Введение в примитивы Java

1. обзор

Язык программирования Java имеет восемь примитивных типов данных.

В этой статье мы вспомним, что такое примитивы, и рассмотрим их.

2. Примитивные типы данных

В Java определены восемь примитивовint,byte,short,long,float,double,boolean и char – не считаются объектами и представляют необработанные значения.

They’re stored directly on the stack (см.this article для получения дополнительной информации об управлении памятью в Java).

Давайте посмотрим на размер хранилища, значения по умолчанию и примеры использования каждого типа.

Начнем с краткого справочника:

Type Размер (бит) минимальный максимальная пример

byte

8

-27с

27с– 1

байт b = 100;

короткая

16

-215с

215с– 1

короткий s = 30_000;

int

32

-231с

231с– 1

int i = 100_000_000;

long

64

-263с

263с– 1

длинный l = 100_000_000_000_000;

поплавок

32

-2-149с

(2-2-23) · 2127

float f = 1.456f;

двойной

64

-2-1074с

(2-2-52) · 21023

двойной f = 1,456789012345678;

char

16

0

216с– 1

char c = "c";

логический

1

логическое b = истина;

2.1. intс

Первый примитивный тип данных, который мы собираемся рассмотреть, - этоint. Типint, также известный как целое число, содержит широкий диапазон значений не дробных чисел.

В частности,Java stores it using 32 bits of memory. Другими словами, он может представлять значения от -2 147 483 648 (-231с) до 2 147 483 647 (231с-1).

В Java 8 можно хранить целое число без знака до 4 294 967 295 (232-1) с помощью новых специальных вспомогательных функций.

Мы можем просто объявитьint:

int x = 424_242;

int y;

Значение по умолчанию дляint, объявленного без присваивания, равно 0.

Если переменная определена в методе, мы должны присвоить значение, прежде чем мы сможем его использовать.

Мы можем выполнять все стандартные арифметические операции надints. Просто имейте в виду, чтоdecimal values will be chopped off при выполнении этих операций с целыми числами.

2.2. byteс

byte - это примитивный тип данных, аналогичныйint, за исключениемit only takes up 8 bits of memory. Таким образом, почему мы называем это байтом. Поскольку размер памяти настолько мал,byte может содержать только значения от -128 (-27) до 127 (27 - 1).

Мы можем создатьbyte:

byte b = 100;

byte empty;

Значение по умолчаниюbyte также равно 0.

2.3. shortс

Следующая остановка в нашем списке примитивных типов данных в Java -short.

Если мы хотим сэкономить память, аbyte слишком мал, мы можем использовать тип посередине между двумя:short.

При 16-битной памяти это вдвое меньшеint и вдвое большеbyte. Диапазон возможных значений составляет от -32 768 (-215с) до 32 767 (215с - 1).

short объявляется так:

short s = 202_020;

short s;

Также как и другие типы, значение по умолчанию равно 0. Мы также можем использовать всю стандартную арифметику.

2.4. longс

Наш последний примитивный тип данных, относящийся к целым числам, -long.

long - старший братint. It’s stored in 64 bits of memory, поэтому он может содержать значительно больший набор возможных значений.

Возможные значения long находятся в диапазоне от -9,223,372,036,854,775,808 (-263с) до 9,223,372,036,854,775,807 (263с - 1).

Мы можем просто объявить один:

long l = 1_234_567_890;

long l;

Как и с другими целочисленными типами, по умолчанию также 0. Мы можем использовать всю арифметику наlong, которая работает наint.

2.5. floatс

Мы представляем основные дробные числа в Java, используя типfloat. Это десятичное число одинарной точности. Это означает, что если мы получим более шести десятичных знаков, это число станет менее точным и более приблизительным.

В большинстве случаев нас не волнует потеря точности. Но, если наш расчет требует абсолютной точности (например, финансовые операции, посадка на Луну и т. Д.), Нам нужно использовать конкретные типы, предназначенные для этой работы. Для получения дополнительной информации ознакомьтесь с классом JavaBig Decimal.

This type is stored in 32 bits of memory just like int. Однако из-за плавающей десятичной точки его диапазон сильно отличается. Он может представлять как положительные, так и отрицательные числа. Наименьшее десятичное значение составляет 1,40239846 x 10-45с, а наибольшее значение - 3,40282347 x 1038с.

Мы объявляемfloats так же, как и любой другой тип:

float f = 3.145f;

float f;

And the default value is 0.0 instead of 0. Также обратите внимание, что мы добавляем обозначениеf в конец буквального числа, чтобы определить число с плавающей запятой. В противном случае Java выдаст ошибку, потому что тип десятичного значения по умолчанию -double.

Мы также можем выполнять все стандартные арифметические операции надfloats. Однако важно отметить, что мы выполняем арифметику с плавающей запятой совсем не так, как арифметику с целыми числами.

2.6. doubleс

Затем мы посмотрим наdouble - его название связано с тем, что это десятичное число с двойной точностью.

It’s stored in 64 bits of memory. Это означает, что он представляет гораздо больший диапазон возможных чисел, чемfloat.

Хотя он страдает тем же ограничением точности, что иfloat. Диапазон составляет от 4,9406564584124654 x 10-324с до 1,7976931348623157 x 10308с. Этот диапазон также может быть положительным или отрицательным.

Объявлениеdouble аналогично объявлению других числовых типов:

double d = 3.13457599923384753929348D;

double d;

The default value is also 0.0 as it is withfloat. Как иfloat,, мы добавляем буквуD, чтобы обозначить литерал как двойной.

2.7. booleanс

Самый простой примитивный тип данных -boolean. Он может содержать только два значения:true илиfalse. It stores its value in a single bit.

Однако для удобства Java дополняет значение и сохраняет его в одном байте.

Объявитеboolean следующим образом:

boolean b = true;

boolean b;

Объявление его без значения по умолчаниюfalse. boolean - это краеугольный камень управления потоком наших программ. Мы можем использовать с ними логические операторы (например,and, or, и т. Д.).

2.8. charс

Последний примитивный тип данных, на который следует обратить внимание, -char.

Также называемый символом,char - это 16-битовое целое число, представляющее символ в кодировке Unicode. Его диапазон составляет от 0 до 65 535. Что в Юникоде представляет от‘' до‘￿'.

Список всех возможных значений Unicode можно найти на таких сайтах, какUnicode Table.

Теперь объявимchar:

char c = 'a';

char c = 65;

char c;

При определении наших переменных мы можем использовать любой символьный литерал, и они будут автоматически преобразованы в их кодировку Unicode для нас. Значение по умолчанию для символов -‘/u0000'..

2.9. перелив

Примитивные типы данных имеют ограничения по размеру. Но что произойдет, если мы попытаемся сохранить значение, превышающее максимальное значение?

Мы сталкиваемся с ситуацией под названиемoverflow.

Когда целое число переполняется, оно возвращается к минимальному значению и начинает отсчет оттуда.

Переполнение числа с плавающей точкой при возврате бесконечности. Когда они снижаются, они возвращают 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. Autoboxing

Каждый примитивный тип данных также имеет полную реализацию класса Java, которая может обернуть его. Например, классInteger может заключать в себеint. Иногда возникает необходимость преобразовать примитивный тип в его объектную оболочку (например, используя их сgenerics).

К счастью, Java может выполнить это преобразование для нас автоматически. Мы называем этот процессAutoboxing. Вот пример:

Character c = 'c';

Integer i = 1;

3. Заключение

В этом руководстве мы рассмотрели восемь примитивных типов данных, поддерживаемых в Java.

Это строительные блоки, используемые большинством, а не всеми программами Java, поэтому стоит разобраться, как они работают.