Java
Java с нуля для студентов и новичков: установка JDK, первая программа, переменные, ввод и вывод, условия, циклы, массивы, строки, методы, классы, наследование и интерфейсы.
Java (читается «джава») — язык программирования общего назначения. Его создали в компании Sun Microsystems под руководством Джеймса Гослинга, первая версия вышла в 1995 году. С 2010 года язык развивает Oracle вместе с сообществом OpenJDK. Сначала язык назывался Oak, а имя Java получил в честь кофе с острова Ява.
Программа на Java компилируется не в машинный код, а в байт-код — команды для виртуальной машины Java (JVM, Java Virtual Machine). Виртуальная машина есть для Windows, Linux и macOS, поэтому один и тот же скомпилированный файл запускается на любой из них. Отсюда старый девиз языка: «написано однажды — работает везде».
Где применяется
- Серверы и сайты — банки, магазины, системы бронирования, внутренние системы крупных компаний. Это главная область Java.
- Android — приложения для Android пишут на Java и на родственном языке Kotlin.
- Большие данные — многие известные системы обработки данных написаны на Java или работают на JVM.
- Настольные программы и игры — например, среды разработки IntelliJ IDEA и Eclipse и игра Minecraft: Java Edition.
Java часто изучают в университетах и колледжах первым «настоящим» языком: в нём строгие правила, явные типы и классы с первого урока, а знания потом легко переносятся на Kotlin, C# и другие языки.
Версии
Новая версия Java выходит дважды в год, в марте и сентябре. Раз в два года выходит версия LTS (Long Term Support — долгая поддержка), её обновляют много лет: Java 17 (2021), Java 21 (2023), Java 25 (2025). Для учёбы и работы берите LTS. Курс написан для Java 17 и новее: все примеры работают в 17, 21 и более свежих версиях.
Что нужно для начала
- Компьютер с Windows, Linux или macOS.
- JDK (Java Development Kit) — набор для разработки: компилятор
javac, виртуальная машинаjavaи другие инструменты. Бесплатные сборки — Eclipse Temurin (adoptium.net) и Oracle JDK (oracle.com/java); в Linux JDK ставится из репозитория системы. - Редактор кода. Для первых программ хватит любого текстового редактора, но удобнее среда разработки IntelliJ IDEA: её основные возможности бесплатны.
Как всё поставить, рассказывает первый урок, а подробно — справка Как установить JDK и прописать JAVA_HOME.
Как пройти курс
Уроки идут по порядку: от первой программы до классов, наследования и интерфейсов. Каждый следующий урок опирается на предыдущие. Набирайте примеры сами и запускайте их — ошибки компилятора и их исправление учат не меньше, чем текст урока. После каждого урока — несколько вопросов для проверки, в конце — итоговый тест.
В справочнике — короткие ответы на частые вопросы: что значат ошибки NullPointerException и Could not find or load main class, почему строки сравнивают через equals, как пользоваться ArrayList и HashMap, как собрать jar-файл.
Java и JavaScript — разные языки, похожи у них только названия; чем они отличаются, рассказывает справка Чем Java отличается от JavaScript.
Курс с нуля
- 1.Установка JDK и первая программаЧто такое JDK и JVM, где взять Java, как написать первую программу, скомпилировать её командой javac, запустить командой java и в IntelliJ IDEA.
- 2.Переменные и типы данныхКак объявить переменную в Java, какие бывают типы (int, long, double, char, boolean, String), как считать, почему 7 / 2 даёт 3 и как переводить значения из типа в тип.
- 3.Ввод и выводКак вывести текст и числа через print, println и printf, как прочитать с клавиатуры число, слово и строку через Scanner и чем опасен nextDouble при русских настройках.
- 4.Условия: if, else и switchКак программа на Java выбирает, что делать: if, else if и else, сравнения и логические операции, тернарный оператор, switch в старой записи и со стрелками.
- 5.Циклы for, while и do-whileКак повторять действия в Java: цикл for со счётчиком, while и do-while по условию, break и continue, вложенные циклы и типичные ошибки — бесконечный цикл и лишняя итерация.
- 6.МассивыКак создать массив в Java, обратиться к элементу по индексу, пройти массив циклом, вывести его через Arrays.toString, отсортировать, скопировать и сделать двумерный массив.
- 7.Строки: String и StringBuilderКак работать со строками в Java: длина, символ по номеру, substring, indexOf, replace, split, сравнение через equals, почему строку нельзя изменить и когда нужен StringBuilder.
- 8.МетодыКак написать свой метод в Java: параметры, return и void, перегрузка, область видимости переменных, почему метод не меняет переданное число, но меняет массив, и рекурсия.
- 9.Классы и объектыЧто такое класс и объект в Java: поля, методы, конструктор и this, создание объектов через new, инкапсуляция с private и геттерами, метод toString.
- 10.Наследование и интерфейсыКак в Java один класс наследует другой через extends, что делают super и @Override, что такое полиморфизм, абстрактный класс и интерфейс с implements.
Справочник
- ArrayIndexOutOfBoundsException — выход за границы массиваЧто значит ошибка Index 5 out of bounds for length 5, почему она возникает в цикле с <= и при пустом массиве, и похожие ошибки у ArrayList и строк.
- ArrayList: список в JavaКак пользоваться ArrayList: создать список, добавить, получить, изменить и удалить элемент, пройти циклом, проверить наличие, а также ошибки при удалении в цикле и с List.of.
- Could not find or load main class — что делатьПочему команда java пишет Error: Could not find or load main class и ClassNotFoundException: запуск с .class, не та папка, регистр букв, пакет, CLASSPATH и что проверить в IntelliJ IDEA.
- HashMap: словарь в JavaКак пользоваться HashMap: положить и получить значение по ключу, проверить ключ, пройти все пары, посчитать слова, и почему порядок в HashMap не гарантирован.
- NullPointerException — причины и как исправитьЧто значит java.lang.NullPointerException, как по сообщению понять, какая переменная оказалась null, частые причины и способы защититься от ошибки.
- Scanner пропускает nextLine после nextIntПочему nextLine после nextInt или nextDouble возвращает пустую строку и как это исправить: лишний nextLine или чтение всех строк через nextLine и parseInt.
- «javac» не является внутренней или внешней командойПочему Windows не находит javac или java и что делать: поставить JDK вместо JRE, добавить папку bin в Path, открыть новое окно; javac command not found в Linux.
- Исключения: try и catchКак обработать исключение в Java через try, catch и finally, чем проверяемые исключения отличаются от непроверяемых, как бросить своё через throw и что такое try с ресурсами.
- Как округлить числоКак округлить число в Java: Math.round, Math.floor и Math.ceil, округление до двух знаков после запятой, вывод через printf и точное округление денег через BigDecimal.
- Как отсортировать массив или списокКак отсортировать массив через Arrays.sort и список через Collections.sort и list.sort, по убыванию, по длине или полю объекта и как правильно сортировать русские слова с буквой ё.
- Как перевести строку в число и обратноКак превратить строку в int или double через Integer.parseInt и Double.parseDouble, что делать с NumberFormatException, как перевести число в строку и цифру-символ в число.
- Как получить случайное числоКак получить случайное целое число в диапазоне через Random и Math.random, случайное дробное число, одинаковую последовательность с seed и случайный порядок списка.
- Как создать jar-файл и запустить егоКак собрать программу на Java в исполняемый jar командой jar, указать главный класс, запустить через java -jar, что значит no main manifest attribute и как собрать jar в IntelliJ IDEA.
- Как установить JDK и прописать JAVA_HOMEГде скачать JDK, как поставить его в Windows, Linux и macOS, как задать переменные JAVA_HOME и Path и проверить, что java и javac работают.
- Сравнение строк: == и equalsПочему строки в Java сравнивают через equals, а не ==, когда == случайно срабатывает, как сравнить без учёта регистра, безопасно при null и по алфавиту.
- Чем int отличается от IntegerЧем примитивный тип int отличается от класса Integer, что такое автоупаковка, почему ArrayList<int> нельзя, почему == у Integer подводит после 127 и откуда NullPointerException.
- Чем Java отличается от JavaScriptJava и JavaScript — два разных языка с похожими названиями. Чем они отличаются: где работают, как запускаются, типы, синтаксис, и какой из них учить первым.
- Что такое staticЧто значит static у поля и метода в Java, чем статическое отличается от обычного, зачем static у main и как исправить ошибку non-static cannot be referenced from a static context.
Официальная документация
- Учебные материалы по Java от Oracle (dev.java, на английском) — https://dev.java/learn/
- Документация Java SE 21 — https://docs.oracle.com/en/java/javase/21/
- Eclipse Temurin — бесплатные сборки JDK — https://adoptium.net/