Программирование • 01 августа 2024 • 5 мин чтения

Типы данных в Java: особенности и способы применения

Разбираемся, чем отличаются примитивные и ссылочные типы данных. Рассказываем, какие значения присваиваются переменным по умолчанию.

Какие типы данных есть в Java

Java — язык со строгой типизацией. Проще говоря, любой переменной необходимо присваивать тип данных. Он может относиться к одной из двух категорий типов: примитивной или ссылочной.

Примитивные типы — это данные, имеющие определённый формат и значение. Они применяются для хранения простой информации, например чисел, символов или логических значений. Ссылочные типы данных в Java не содержат значения, а ссылаются на место, где они расположены. Проще говоря, это не сами данные, а ссылки. Сюда входят строки, массивы, классы и интерфейсы.

В Java есть возможность изменять тип данных, но исключительно внутри категории — допустим, перейти от массивов к коллекциям, потому что оба типа ссылочные, но не к числам

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

Прежде всего в примитивы входят числовые данные. Они бывают трёх категорий: целые, вещественные и логические. Разберёмся, чем они отличаются друг от друга, с помощью таблицы.

Примитивные типы данных различаются значением, длиной и используемым объёмом памяти

Разберёмся в особенностях целых чисел в языке Java. Как правило, byte подходит для работы с небольшими целыми числами и экономит память. Однако чаще всего разработчики используют int, потому что он даёт оптимальное соотношение точности и экономии памяти. Также стоит отметить, что при присвоении значения переменным byte, short и int используются только числа, а в long к ним добавляется заглавная буква L в конце — например, long myLong = 1000L.

Также к целым примитивным типам данных относится char. Но в отличие от других типов он включает в себя не цифры, а символы Unicode от U+0000 до U+FFFF. Применяется при отображении текста, к примеру для манипуляций со строками.

Вот как используется char, чтобы показать символ «П»

Рассмотрим вещественные типы данных в Java. Сюда входят дробные числа, например 0,5 или 13,5743656.

Float может включать 7–8 цифр после запятой, а double — до 17

Обозначение вещественных типов отличается тем, что значение double присваивается просто дробным числом, а к float в конце добавляется «f» — например, float myFloat = 1.25f. Double используется, когда нужна высокая точность чисел, например для указания координат в пространстве. А float — в случаях, когда высокая точность не требуется, например при обработке изображений, где точность в пикселях может варьироваться от 0 до 1.

В категории примитивов стоит выделить boolean. Он применяется при присвоении логических значений, которые могут быть истиной (true) или ложью (false).

К примеру, boolean пригодится при тестировании условий циклов

Кроме того, boolean полезен для разработки алгоритмов с ветвлением или объектов пользовательского интерфейса, если они могут находиться во включённом или выключенном состоянии, — допустим, кнопок.

Разобраться в типах, структурах и алгоритмах данных Java поможет курс «Java-разработчик». Он включает 400 часов практической работы под руководством опытных наставников из Яндекса, Тинькофф, Сбера, VK и других крупных IT-компаний. На занятиях студенты делают групповой и минимум пять личных проектов, которые станут основой портфолио.

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

Строки. Состоят из символов Unicode, обозначаются классом String и двойными кавычками и могут включать в себя буквы или числа. Строковые данные в Java относятся к иммутабельным типам. Говоря простыми словами, значения внутри них нельзя поменять после присвоения, но можно объявить новое значение для ссылки.

Строки используют для текстовой информации, например при присвоении имён или указании адресов. Также с их помощью можно отображать названия элементов управления — меток и кнопок. Кроме того, они подходят для поиска и замены подстрок благодаря регулярным выражениям.

Если есть задача сделать вывод строки с именем SpongeBob, её можно выполнить с помощью строк

Массив. Это упорядоченная коллекция однотипных объектов с нумерацией. При этом порядковый номер первого элемента всегда ноль. Массивы — изменяемый тип данных, их содержимое можно корректировать после создания, но нет возможности поменять размер.

Массивы в Java позволяют скорректировать порядок значений внутри себя

С помощью массивов хранят и обрабатывают большое количество однотипных данных. Они пригодятся в ситуации, когда необходимо отсортировать элементы или найти среди них какой-то определённый экземпляр. Кроме того, массивы помогают упростить код и делают его эффективнее. Массивы — это низкоуровневый механизм, и работать с ними можно достаточно быстро. Благодаря этому их часто используют в задачах, где важна производительность, например при обработке изображений и текстов или данных нейросетей.

Класс. Ссылочный тип данных, состоящий из переменных, то есть из данных и свойств, а также методов, описывающих функции и поведение этих переменных. С классами можно проделывать разные манипуляции, допустим включать друг в друга по ссылке или составлять их других путём наследования. Новые классы копируют свойства и методы предков, что даёт возможность переиспользовать готовые классы и добавлять к ним свои уточнения в поведении.

Классы подходят для описания на языке Java объектов реальной жизни, например автомобилей, людей или животных.

Так можно описать животное при помощи классов

Интерфейс. Если классы определяют свойства и методы переменной, то интерфейсы — только методы. Говоря простыми словами, этот тип данных в Джава описывает, как элементы программы будут работать друг с другом. Также интерфейсы можно использовать для проверки кода. Поскольку они определяют связь (контракт) классов, то дают возможность определить, соответствует ли класс контракту интерфейса. Интерфейсы дают разработчикам возможность дополнять классы новым поведением, не изменяя их свойства. Таким образом в программы добавляются новые функции или видоизменяются существующие.

Так через интерфейс в Java описывается действие

Какие значения по умолчанию бывают у переменных

Если в коде не указать значение переменной, оно присваивается по умолчанию. Это необходимо для предсказуемого поведения программы, если значение переменной не было явно задано при её объявлении или присвоении. В Java значения по умолчанию зависят от типа данных. Приведём их в таблице:

По умолчанию все дробные числа определяются как double, а ссылки, которые ни на что не ссылаются, — как null. Нужно проверять ссылочные значения на null, иначе программа не сможет работать

Отдельно стоит отметить локальные переменные — они объявляются внутри метода и находятся исключительно в той части кода, где были объявлены. Таким переменным значения присваиваются автоматически, поэтому перед применением их нужно явно объявить.

Совет эксперта

Пётр Кушнир

Создатели языка Java специально сделали тип данных таким образом, чтобы другие разработчики могли создавать программы для любой сферы жизни. В программе на Java найдётся место для математики, логики, абстрактного моделирования и конкретных финансовых расчётов, для задач практической науки и создания сложной программной архитектуры.

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

Статью подготовили:
Пётр Кушнир
Яндекс Практикум
Автор курса «Java-разработчик»
Женя Соловьёва
Яндекс Практикум
Редактор
Анастасия Павлова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Thu Sep 26 2024 03:00:44 GMT+0300 (Moscow Standard Time)