1. Основы синтаксиса Java, типы данных и управляющие конструкции
Основы синтаксиса Java, типы данных и управляющие конструкции
Добро пожаловать на курс «Разработчик Java: От основ до профессионала». Мы начинаем наше путешествие в мир одного из самых популярных, надежных и востребованных языков программирования в мире. Java используется везде: от мобильных приложений на Android до серверных систем крупнейших банков и корпораций.
В этой первой статье мы разберем фундамент: как устроена программа на Java, где хранятся данные и как управлять ходом выполнения кода.
Как работает Java: Принцип кроссплатформенности
Прежде чем писать код, важно понять, как он запускается. Главный лозунг Java: «Write once, run anywhere» (Напиши один раз, запускай везде). Это достигается благодаря виртуальной машине Java (JVM).
Когда вы пишете код на C++, он компилируется в машинный код конкретной операционной системы. Если вы захотите запустить его на другой ОС, вам придется перекомпилировать программу. В Java всё иначе.
Ваш код (файл .java) компилируется не в машинный код, а в байт-код (файл .class). Этот байт-код понимает JVM, которая уже переводит его на язык конкретного компьютера. Именно поэтому Java-программы так легко переносить.
Анатомия Java-программы
Java — объектно-ориентированный язык. Это значит, что всё в Java является частью класса. Давайте посмотрим на минимально возможную программу, которая выводит текст на экран.
Разберем каждую строчку:
public class Main: Мы объявляем класс с именем Main. В Java имя файла должно совпадать с именем публичного класса внутри него (файл должен называться Main.java).public static void main(String[] args): Это точка входа в программу. Когда вы запускаете приложение, JVM ищет именно этот метод. public: метод доступен извне.
* static: метод можно вызвать без создания экземпляра класса.
* void: метод ничего не возвращает.
* main: зарезервированное имя главного метода.
System.out.println(...): Команда вывода текста в консоль.Обратите внимание на фигурные скобки {}. Они ограничивают блоки кода. Также важно помнить: каждая команда в Java должна заканчиваться точкой с запятой ;.
Переменные и типы данных
Java — язык со строгой статической типизацией. Это значит, что каждая переменная должна иметь определенный тип, и этот тип нельзя изменить в процессе работы программы. Вы не можете положить строку в переменную, предназначенную для целого числа.
Синтаксис объявления переменной:
ТипДанных имяПеременной = значение;
Примитивные типы данных
В Java существует 8 примитивных типов данных. Они являются строительными блоками для всего остального. Они хранят простые значения и занимают фиксированный объем памяти.
| Тип | Группа | Размер (бит) | Описание |
| :--- | :--- | :--- | :--- |
| byte | Целые числа | 8 | Очень маленькие числа |
| short | Целые числа | 16 | Маленькие числа |
| int | Целые числа | 32 | Основной тип для целых чисел |
| long | Целые числа | 64 | Очень большие числа (в конце ставится L) |
| float | Дробные числа | 32 | Числа с плавающей точкой (в конце ставится f) |
| double | Дробные числа | 64 | Дробные числа двойной точности (стандарт для дробей) |
| char | Символы | 16 | Один символ Unicode (например, 'A') |
| boolean | Логический | - | Только true (истина) или false (ложь) |
#### Диапазоны значений
Понимание размера типа важно для оптимизации памяти. Например, тип byte занимает 1 байт (8 бит). Поскольку один бит используется для знака (плюс или минус), диапазон значений вычисляется по формуле:
Где — это диапазон значений (Range), — количество бит, выделенных под тип данных (в данном случае 8), а в верхней границе обусловлена наличием нуля.
Для типа byte () это будет:
Где — это минимальное значение типа byte. И максимальное:
Где — это максимальное значение типа byte. Таким образом, в byte можно записать числа от -128 до 127.
Примеры объявления переменных:
Ссылочные типы данных
Кроме примитивов, существуют ссылочные типы. Самый популярный из них — String (строка). Ссылочные типы хранят не само значение, а адрес в памяти, где лежит объект.
Обратите внимание: примитивы пишутся с маленькой буквы (int), а классы и ссылочные типы — с большой (String).
Операторы
Java поддерживает стандартный набор математических и логических операторов.
Арифметические операторы
*+ (сложение)
* - (вычитание)
(умножение)
* / (деление). Важно: деление двух целых чисел вернет целое число (остаток отбрасывается). 5 / 2 будет равно 2.
* % (остаток от деления). 5 % 2 будет равно 1.Операторы сравнения
Результатом работы этих операторов всегда являетсяboolean (true или false).
* == (равно)
* != (не равно)
* > (больше), < (меньше)
* >= (больше или равно), <= (меньше или равно)Управляющие конструкции
Код не всегда выполняется линейно сверху вниз. Иногда нам нужно принимать решения или повторять действия.
Условный оператор if-else
Позволяет выполнить блок кода, только если условие истинно.
Конструкция switch
Удобна, когда нужно перебрать конкретные значения одной переменной.
Ключевое слово break необходимо, чтобы выйти из switch после выполнения нужного блока. Без него программа продолжит выполнять следующие case, игнорируя проверки.
Циклы
Циклы позволяют выполнять блок кода многократно.
#### Цикл for
Используется, когда мы знаем, сколько раз нужно повторить действие. Классический пример — счетчик.
Этот код выведет строки от "Итерация: 0" до "Итерация: 4".
#### Цикл while
Используется, когда мы не знаем точного числа повторений, но знаем условие, при котором цикл должен работать.
#### Цикл do-while
Похож на while, но гарантирует, что тело цикла выполнится хотя бы один раз, так как проверка условия происходит в конце.
Заключение
Мы рассмотрели базовый синтаксис Java: структуру программы, примитивные типы данных и способы управления потоком выполнения. Это алфавит, из которого мы будем складывать сложные слова и предложения в будущих статьях.
В следующем уроке мы углубимся в объектно-ориентированное программирование (ООП) — сердце Java, где узнаем про классы, объекты, наследование и полиморфизм.
> «Программы должны писаться для того, чтобы их читали люди, и только попутно для того, чтобы их выполняли машины.» — Гарольд Абельсон