Типы данных Java

Язык Java, является строго типизированным языком программирования. Типы данных Java можно условно разделить на две больших группы: примитивные (в некоторых источниках используется термин «простые») и ссылочные. Давайте более подробно рассмотрим первый тип данных — примитивный.

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

В Java представлены восемь примитивных типов данных.

Типы данных Java

Не смотря на внешнюю простоту, в Таблице 1.1 представлен большой объем информации и следует выделить несколько ключевых моментов:

• float и double используются для значений с плавающей точкой

• Для переменных типа float необходимо указывать букву f сразу после значения.

• byte, short, int и long используются для значений без плавающей точки.

• Каждый числовой тип данных использует в два раза больше бит, чем предшествующий ему тип. Например, тип short использует два раза больше бит, чем byte.

• Объем памяти выделяемый под переменную с типом boolean зависит от конкретной реализации JVM.

• Переменные с типом byte и short могут быть крайне полезны с точки зрения экономии памяти при использовании в больших массивах.

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

в Java, как и в англоязычных странах дробная часть числа отделяется от целой части точкой, а не запятой как в России, Испании, Голландии и многих других странах.

Давайте посмотрим на то, как Java определяет диапазоны допустимых значений. Из уроков информатики нам известно, что байт содержит 8 бит. У бита может быть только два возможных значения. В итоге получаем 28 = 256, так как 0 необходимо включить в диапазон, Java забирает одно значение со стороны положительных чисел и получается от -128 до 127. Количество бит используется Java для определения объема памяти, который нужно выделить под конкретную переменную. Заучивать диапазон значений и объем памяти выделяемый под тот или иной тип переменных совершенно необязательно, Java может нам сама предоставить всю необходимую информацию:

Integer можно заменить любым другим числовым классом-оберткой Double, Float, Long и т.д.



Наименьшим по длине является целочисленный тип byte. Переменные типа byte особенно удобны для работы с потоками ввода-вывода данных в сети или файлах. Они удобны так же при манипулировании необработанными двоичными данными, которые могут и не быть непосредственно совместимы с другими встроенными типами данных в Java. Для объявления переменных типа byte служит ключевое слово byte.

Тип short представляет собой 16-разрядное целочисленное значение и применяется в Java реже остальных. Для объявления переменных типа short служит ключевое слово short.

Самым часто употребляемым целочисленным типов является int. Зачастую переменные типа int используются для управления циклами и массивами.

Тип long удобен в тех случаях, когда длины типа int недостаточно для хранения требуемого значения. Когда число представлено в коде, оно называется литералом. При объявлении переменных с типом long следует обратить внимание, что по умолчанию Java предполагает, что литералом представлена переменная с типом int, что может привести к определенным проблемам при компиляции:

Указанное число выходит за приделы допустимых значений с типом int. Решение будет очень простым — добавить букву L в конце числа. В данном случае, нет никакой разницы будет буква L строчная или прописная, но для удобства чтения кода рекомендуется использовать прописную букву ввиду схожести строчной буквы с цифрой 1.

Сейчас мы явно объявили, что используется числовой литерал с типом long, что позволило избежать ошибок при компиляции.

Тип float определяет числовое значение с плавающей точкой одинарной точности. В некоторых процессорах обработка подобных значений происходит значительно быстрее и требует гораздо меньше памяти, чем аналогичных значений с двойной точностью. Но если числовые значения слишком велики или слишком малы, то тип данных float может не обеспечить требуемую точность вычислений. Так же, как и с типом long, при объявлении переменных с типом float следует учитывать, что для дробных чисел, по умолчанию, Java предполагает, что числовым литералом с плавающей точкой представлено число с типом double. Если нужно присвоить переменной с типом float числовой литерал с плавающей точкой, то в его конце нужно добавить букву f:

Тип double используется для хранения чисел с плавающей точкой двойной точности. В некоторых современных процессорах оптимизированных для выполнения математических расчетов обработка значений двойной точности выполняется быстрее, чем обработка значений одинарной точности. Рациональнее всего пользоваться типом double, когда требуется сохранить точность многократно повторяющихся вычислений или манипулировать большими числами.

Объем памяти выделяемый под переменную с типом boolean зависит от конкретной реализации JVM

В Java 7 была добавлена возможность указывать числовые литералы со знаком подчеркивания. Знаки подчеркивания используются только ради удобства чтения больших чисел, компилятор Java просто удаляет их. Добавлять нижнее подчеркивание можно где угодно, за исключением начала и конца литерала, перед и после десятичного разделителя (точки):

Помимо нижнего подчеркивания в 7ой версии Java была добавлена возможность указывать числа в двоичной форме с префиксом 0b:

В Java тип данных char служит для представления отдельных символов с использованием кодировки Unicode. Как видно из таблицы 1.1 диапазон допустимых значений этого типа составляет от 0 до 65536, отрицательных значений у типа char быть не может. В формальной спецификации Java тип char упоминается как целочисленный (из-за особенностей представления в памяти и традиций), поэтому им можно пользоваться для выполнения арифметических операций:

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

Типы данных Java

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

Выше приведенный код абсолютно корректен и соответствует:

В языке Java имеется примитивный тип Boolean, предназначенный для хранения логических значений: true (истина) или false (ложь). Значения этого типа возвращаются из всех операций сравнения, например, a < b.



Ссылочные типы данных Java.

Ссылочные типы данных Java ссылаются на объект (экземпляр класса). В отличии от примитивных типов, которые хранят свои значения в памяти, ссылочные типы не хранят значения объектов, на которые ссылаются. В качестве примера, объявим и инициализируем ссылочную переменную типа String:

Присвоить значение ссылочной переменной можно двумя способами:

• Ссылочная переменная может быть присвоена другому объекту того же типа;

• Ссылочная переменная может быть присвоена новому объекту с использованием ключевого слова new.

Переменная str теперь указывает на новый объект в памяти с типом String и может быть использована для доступа к различным полям и методам объекта String. Есть несколько важных отличий между ссылочным и примитивным типом данных. Во-первых, ссылочной переменной может быть присвоен null, это означает, что переменная в данный момент не ссылается ни на какой объект. При попытке присвоить null, переменной с простым типом данных возникнет ошибка компиляции:

Во-вторых, ссылочные переменные могут быть использованы для вызова методов, если они не указывают на null. У примитивных типов данных нет методов:

Site Footer