В языке Java определено восемь простых (или примитивных) типов данных. Для каждого простого типа данных отводится конкретный размер памяти, не зависящий от платформы, на которой выполняется приложение Java:
Таблица
Тип данных
Размер занимаемой области памяти
Значение по умолчанию
boolean
false
byte
char
'x0'
short
int
long
float
0.0f
double
0.0d
Фактически размеры памяти, отведенные для хранения переменной, могут отличаться от приведенных выше, например, для хранения переменной типа short может быть зарезервировано слово размером 32 бита. Так как в языке Java нет указателей, вы не можете адресоваться к элементам массива чисел по относительному смещению этих элементов в оперативной памяти. Следовательно, точный размер элемента в данном случае не играет никакой роли.
Переменные простых типов инициализируются либо по умолчанию, либо явно. Однако участвовать в вычислениях могут только явно инициализированные переменные.
byte n =2;
float f;
int i; // инициализация 0 по умолчанию
. . .
f=(float)i/n; // ошибка, переменная i не инициализирована явно
i = 7;
f=(float)i/n; // верно
Переменные типа boolean могут принимать только два значения − true и false, не соотносимые с целыми значениями. Нельзя, выполнить преобразование типа boolean, например, к типу int.
В языке Java все целочисленные простые типы данных (byte, short, int и long) являются знаковыми.
Приложение Java может оперировать данными в формате с плавающей точкой, используемыми для хранения чисел с одинарной точностью (float), и с двойной (double).
Простые типы данных также имеют классы «оболочки» − встроенные замещающие классы, которые могут использоваться для создания объектов на основе этих типов. Например, вместо типа int использовать класс Integer, вместо типа long − класс Long и так далее.
Инициализации этих объектов должна выполняться с помощью конструктора, например:
int val = 5;
Integer Val; // создание неинициализированной ссылки
Val=new Integer(val); // инициализация ссылки
или
Integer Val=new Integer(5); // создание и инициализация ссылки
При этом не может использоваться конструктор без параметра.
После выполнения оператора присваивания ссылка Val будет ссылаться на реальный объект класса Integer и ее можно использовать. Пытка же использовать неинициализированную ссылку приводит к исключению.
Имя объекта Val типа Integer можно передавать функциям в качестве параметра, причем это будет ссылкой на объект.
Одна из существенных особенностей языка Java, состоит в том, что в языке Java нет указателей. Использование указателей в других языках часто приводит к появлению трудно обнаруживаемых ошибок. Поэтому разработчики Java решили отказаться от использования указателей совсем.
Фрагмент программы, написанный с использованием указателей на переменные простых типов, приведет к ошибке, так как переменные простых типов передаются по значению, а не по ссылке:
int val; // некоторая переменная
void ChangeVal(int *pVal, int nVal)
{
*pVal=nVal;
}
. . .
ChangeVal(&val, 5); // вызов функции
Язык Java позволяет использовать вместо указателей ссылки на объекты. Пользуясь этими ссылками, можно адресовать объекты по их имени, вызывая методы и изменяя значения данных объектов.