Выбрать главу

Примитивных типов всего восемь. К ним относятся логический (иногда говорят булев) тип, называемый boolean, и семь числовых (numeric) типов.

Числовые типы делятся на целые (integral1) и вещественные (floating-point).

Целых типов пять: byte, short, int, long, char.

Символы можно применять везде, где используется тип int, поэтому JLS причисляет тип char к целым типам. Например, символы можно использовать в арифметических вычислениях, скажем, можно написать 2 + 'Ж', к двойке будет прибавляться кодировка Unicode '\u04i6' буквы 'Ж'. В десятичной форме это число 1046, и в результате сложения получим 1048.

Напомним, что в записи 2 + "Ж", где буква Ж записана как строка, в кавычках, плюс понимается как сцепление строк, двойка будет преобразована в строку, в результате получится строка "2Ж".

Вещественных типов всего два: float и double.

На рис. 1.2 показана иерархия типов данных Java.

byte short int long char float doubleРис. 1.2. Типы данных языка Java

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

Замечание для специалистов

Java — язык со строгой типизацией (strongly typed language).

Разберем каждый тип подробнее.

Логический тип

Значения логического типа boolean возникают в результате различных сравнений, вроде 2 > 3, и используются главным образом в условных операторах и операторах циклов. Логических значений всего два: true (истина) и false (ложь). Это служебные слова Java. Описание переменных данного типа выглядит так:

boolean b = true, bb = false, bool2;

Над логическими данными можно выполнять операции присваивания, например bool2 = true, в том числе и составные с логическими операциями; сравнение на равенство b == bb и на неравенство b != bb, а также логические операции.

Логические операции

В языке Java реализованы четыре логические операции:

□ отрицание (NOT) — ! (обозначается восклицательным знаком);

□ конъюнкция (AND) — & (амперсанд);

□ дизъюнкция (OR) — | (вертикальная черта);

□ исключающее ИЛИ (XOR) — л (каре).

Они выполняются над логическими данными типа boolean, их результатом будет тоже логическое значение — true или false. Про эти операции можно ничего не знать, кроме того, что представлено в табл. 1.1.

Таблица 1.1. Логические операции
b1 b2 !b1 b1 & b2 b1 | b2 b1 л b2
true true false true true false
true false false false true true
false true true false true true
false false true false false false

Словами эти правила можно выразить так:

□ отрицание меняет значение истинности;

□ конъюнкция истинна, только если оба операнда истинны;

□ дизъюнкция ложна, только если оба операнда ложны;

□ исключающее ИЛИ истинно, только если значения операндов различны.

ЗАМЕЧАНиЕ

Если бы Шекспир был программистом, фразу "To be or not to be" он написал бы так:

2b | ! 2b.

Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления:

□ сокращенная конъюнкция (conditional-AND) — &&;

□ сокращенная дизъюнкция (conditional-OR) — | |.

Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов.

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

Это правило очень удобно и довольно ловко используется программистами, например можно записывать выражения (n != 0) && (m/n > 0.001) или (n == 0) | | (m/n > 0.001), не опасаясь деления на нуль.

вернуться

1

Название "integral" не является устоявшимся термином. Так названа категория целых типов данных в книге The Java Language Specification, Third Edition. James Gosling, Bill Joy, Guy Steele, Gilad Bracha (см. введение).Ред.