На этом шаге мы рассмотрим простейшие типы
Язык Java является строго типизированным. Это означает, что тип каждой переменной должен быть объявлен. В Java имеются 8 основных простых или примитивных типов данных. 4 из них представляют целые числа, 2 - действительные числа с плавающей точкой, 1 - символы в Unicode кодировке, и последний - логические значения. Рассмотрим каждый тип.
Целочисленные типы данных служат для представления как положительных, так и отрицательных чисел без дробной части. В Java имеются 4 целочисленных типа. Они представленны в таблице 1.
Тип | Требуемый объем памяти (в байтах) | Диапозон допустимых значений |
---|---|---|
int | 4 | От -2147483648 до 2147483647 |
short | 2 | От -32768 до 32767 |
long | 8 | От -9223372036854775808 до 9223372036854775807 |
byte | 1 | От -128 до 127 |
Как правило, наиболее удобным оказывается тип int. Например, если требуется представить в числовом виде количество людей в вашем городе, то, с большой долей вероятности, вам врядли нужно прибегать к типу long. Типы byte и short используются, главным образом, в специальных приложениях, например, при низкоуровневой обработке файлов или ради экономии памяти при формировании большых массивов (их мы будем рассматривать в дальнейших шагах). В Java диапозоны допустимых значений целочисленных типов не зависят от машины, на которой выполняется программа. Это существенно упрощает перенос программного обеспечения с одной платформы на другую.
Длинные целые числа указываются с суффиксом L (например, 4000000000L), шестнайцатеричные числа - с префиксом 0х (например, 0хCAFE), восьмеричные числа - с префиксом 0 (например, 010 = 8 в десятеричной системе счисления). Стоит отметить, что восьмеричная запись числа иногда приводит к недоразумениям, поэтому мы не рекомендуем пользоваться восьмеричными числами.
Начиная с версии Java 7 числа можно указывать и в двоичной форме, указав префикс 0b (например, 0b1001 = 9 в дестячной системе счисления).
Типы данных с плавающей точкой предстваляют числа с дробной частью. В Java имеются два числовых типа данных с плавающей точкой. Они представлены в таблице 2.
Тип | Требуемый объем памяти (в байтах) | Диапозон допустимых значений |
---|---|---|
float | 4 | Приблизительно ±3.40282347E+38F (6-7 значащих десятичных цифр) |
double | 8 | Приблизительно ±1.7976931348623157E+308F (15 значащих десятичных цифр) |
Название double означает, что точность таких чисел в двое превышает точность чисел типа float (некоторые называют их числами с двойной точностью). Для большинства приложений тип double считается более удобным. Более того, ограниченной точности чисел типа float во многих случаях оказывается совершенно недостаточно. Семи значащих цифр, возможно, хватит для того, чтобы точно представить ваш годовой доход в местной валюте, но врядли достаточно для представления дохода президента вашей компании. Причинами, по которым тип float все еще применяется , служат скорость обработки числовых данных (для чисел типа float она выше), а также экономия памяти для хранения данных (это важно для больших массивов вещественных чисел).
Числовые значения типа float указываются с суффиксом F, например 3.14F. А числовые значения с плавающей точкой, указываемые без суффикса F (например, 3.14), всегда рассматриваются как относящиеся к типу double. Для их представления можно (но не обязательно) использовать суффикс D, например 3.14D.
Все операции над числами с плавающей точкой производятся по стандарту IEEE 754. В частности, в Java имеются три специальных значения с плавающей точкой:
Например, результат деления положительного числа на 0 равен положительной бесконечности. А вычисление выражение 0/0 или извлечение квадратного корня из отрицательного числа дает нечисловой результат NaN.
Тип данных char служит для представления отдельных символов. Чаще всего это символьные константы. Например, символьной константой является 'A', которой соответствует числовое значение 65. Не следует путать символ 'A' со строкой "A", состоящей из одного сивола. Кодовые единицы уникода (Unicode) могут быть представлены шестнадцатеричными числами в пределах от \u0000 до \uFFFF. Например, значение \u2122 соответствует символу торговой марки (™), а значение \u03C0 - греческой букве π.
Кроме префикса \u, который предсталяет кодовую единицу в уникоде, существует также несколько специальных управляющих последовательностей символов. Они представлены в таблице 3.
Управляющая последовательность | Назначение | Значение в уникоде |
---|---|---|
\b | Возрат на одну позицию | \u0008 |
\t | Табуляция | \u0009 |
\n | Переход на новую строку | \u000a |
\r | Возврат каретки | \u000d |
\" | Двойная кавычка | \u0022 |
\' | Одинарная кавычка | \u0027 |
\\ | Обратная косая черта | \u005c |
Тип данных boolean имеет два логических значения: false и true. Они служат для вычисления логических выражений. Преобразование значений типа boolean в целочисленные и наоборот невозможно.
В языке программирования C++ вместо логических значений можно использовать числа и даже указатели. Так, нулевое значение эквивалентно логическому логическому значению false, а не нулевые значения - логическому значению true. А в Java представить логические значения посредством других типов нельзя. Следовательно, программирующий на Java защищен от недоразумений, подобных следующему:
int x = 1; if (x = 0) { }
В C++ этот код компилируется и выполняется проверка по условию, которая всегда дает логическое значение false. А в Java наличие такого кода приведет к ошибке на этапе компилации, по скольку целочисленное выражение x = 0 нельзя преобразовать в логическое.
На следующем шаге мы узнаем, как объявлять переменные