Программирование не обходится без управления данными, и переменные являются кирпичиками этого процесса. В этой статье мы погрузимся в мир переменных и типов данных в языке Java.
Содержание:
Переменные и их типы
Переменная – это область памяти в программе с собственным именем, которое переменной дал программист. Переменные позволяют сохранять данные и управлять ими во время выполнения программы. Например, пользователь ввёл в программу своё имя, и оно было записано в переменную с типом “строка”. Когда же программа попросит пользователя ввести возраст, это значение передаётся в переменную с типом “целое число”.
В Java существуют примитивные и ссылочные (составные, сложные) типы данных. Пока что мы рассмотрим примитивные типы. В Java всего есть 8 таких, и они делятся на 4 группы:
- целочисленные – туда можно записать 0, 1, 10386753 или -86756 – это такие типы, как byte (занимает в памяти компьютера 1 байт), short (2 байта), int (4 байта), long (8 байт).
- вещественные – можно сохранить 2.0, 17.29653, -69242.767 – а представляют их в Java типы переменных float (4 байта) и double (8 байт).
- символьные – здесь записываются й, г, s, ?, % – это единственный тип char (2 байт) – хранит символы в формате Unicode.
- логические – может принимать только два значения, true или false – такой тип в Java называется boolean (1 байт).
Вообще, чем больше байт занимает переменная в компьютере, тем больше вариаций значений она может принимать. Однако при хранении переменной типа boolean возникает избыточность. Ведь такая переменная может принимать только два значения (true/false), а значит ей достаточно одного бита. Вместо этого она занимает в компьютере 8 бит (1 байт), поскольку 1 байт – это наименьшая единица памяти компьютера, к которой можно обратиться. В некоторых случаях JVM может оптимизировать использование памяти для определенных типов данных.
Получается, что выбор типа переменной зависит от того, что мы хотим туда положить. Если это число в диапазоне хранения типа byte (от -128 до 127) (например, целое число процентов – ведь это число варьируется только от 0 до 100), то зачем использовать long (от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807), который в 8 раз увесистее по занимаемой памяти?
Отдельно хочу отметить тип данных String. Как вы могли заметить, названия примитивных типов начинаются с маленькой буквы (int, char, boolean). Однако тип String пишется с большой. Это не примитивный тип, он ссылочный. String – это сложная структура (вообще, это называется класс). Она позволяет хранить не один символ (как в переменной типа char), а много. Постепенно понятия будут становиться ещё понятнее, а пока продолжим.
Строки (String) задаются в двойных кавычках (“Я поел кашу”), а символы (char) – в одинарных (‘F’).
Стоит уточнить, что в языке Java присутствует автоматическое приведение некоторых типов данных к другим. Поэтому, например, на практике чаще всего для целых чисел используется int (4 байта), а для вещественных – double (8 байт), хотя информация может быть записана и в гораздо менее затратные по ресурсам типы переменных. К int автоматически приводятся целые числа, к double – вещественные. Поэтому порой нужно дописывать в конце чисел специальные символы-пометки, указывающие, к какому типу они принадлежат. Например, для long это L, для float это f. Это будет видно на примерах.
Перейдём к примерам. Запишем некоторые переменные (объявим их) и присвоим им значения (проинициализируем):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class FirstProject { public static void main(String[] args) { byte studentPercentScore = 85; short secondsPerHour = 3600; int negativeMillion = -1000000; long peopleOnEarth = 8046949318L; float e = 2.71828f; double pi = 3.14159265358979; char favoriteLetter = 'я'; boolean iLoveJava = true; String favoriteGame = "League of Legends"; } } |
Вывод переменных в консоль
Пока что программа просто присваивает значения переменным, и ничего с ними не делает. Давайте же сделаем что-то, что позволит нам увидеть результат.
Воспользуемся консолью. Попробуем повыводить на консоль переменные разных типов.
1 2 3 4 5 6 7 8 9 10 11 |
public class FirstProject { public static void main(String[] args) { byte hoursInDay = 24; short secondsPerHour = 3600; char letter = 'У'; System.out.println(hoursInDay); System.out.println(secondsPerHour); System.out.println(letter); } } |
Отлично, при запуске программы (зелёные иконки треугольников) вывелось несколько строк со значениями переменных. Затем алгоритм завершился (Process finished with exit code 0). Код 0 означает, что проблем при выполнении не возникло.
Теперь можно произвести некоторые операции со значениями переменных. Как в математике можно складывать, умножать, делить числа, так и здесь. Причём можно выполнять не только конкретные вычисления. Если программа ориентирована на случайный выбор каких-либо чисел, реплик персонажей и так далее, применяется генерация случайных чисел.
Запомните одну вещь, от которой страдали многие программисты. Если делить целое число на целое, то получится целое. Если вы хотите получить реальный результат деления, нужно привести хотя бы одно из чисел к вещественному. Потому что иначе получится следующее: 20 / 3 = 6. Если же привести одно из чисел в выражении к вещественному, результат будет другим: 20.0 / 3 = 6.66666666666. Уже лучше.
Можно проводить манипуляции не только с числами: строки, например, можно складывать. Более того, можно складывать строки и с другими типами. В таком случае сложение идёт со строковым представлением другого типа. Напишем небольшую программку для расчёта количества секунд в неделе.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class FirstProject { public static void main(String[] args) { byte secondsPerMinute = 60; byte minutesPerHour = 60; byte hoursPerDay = 24; byte daysPerWeek = 7; int secondsPerWeek = secondsPerMinute * minutesPerHour * hoursPerDay * daysPerWeek; String result = "Всего в неделе секунд: " + secondsPerWeek; System.out.println(result); } } |
Отличный результат! Теперь мы владеем важной информацией, которую можно было рассчитать на калькуляторе.
Переменные и типы данных – это, несомненно, основы программирования на Java. Понимание различных типов данных и их использование позволит управлять информацией в программах. Кроме того, для того, чтобы потом разобраться в коде, переменным стоит давать удобные и содержательные имена.
Мой комментарий здесь…
Твой комментарий здесь…