Программа Java Hello World
Напишите, скомпилируйте и запустите свою первую программу на Java — классический Hello World — и разберитесь в каждой части исходного файла.
Каждый учебник по языку программирования начинается с одного и того же ритуала: крошечной программы, которая выводит Hello, World!. Версия Java содержит больше шаблонного кода, чем большинство языков, но каждая его часть встретится вам снова. Эта глава разбирает программу строка за строкой, а затем показывает, как её скомпилировать и запустить.
Предполагается, что JDK уже установлен; если нет, сначала выполните инструкции из Как установить Java.
Вы можете отредактировать пример ниже и нажать Run — он реально компилируется и выполняется на сервере:
Полная программа
Вот полный исходный файл. По соглашению он сохраняется как HelloWorld.java — Java требует, чтобы имя файла совпадало с именем публичного класса.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Разбор строка за строкой
public class HelloWorld
Каждая программа на Java живёт внутри класса. Класс — это шаблон, объединяющий данные и поведение, — краеугольный камень объектно-ориентированного программирования. Здесь класс называется HelloWorld, а ключевое слово public означает, что он виден из любого другого класса.
По соглашению имена классов используют UpperCamelCase: HelloWorld, BankAccount, Order.
public static void main(String[] args)
Это точка входа программы — метод, который JVM вызывает при запуске кода. Сигнатура точная: измените любую её часть, и JVM не сможет её найти.
public— JVM должна вызывать его извне класса.static— его можно вызвать, не создавая экземплярHelloWorld.void— не возвращает значение.main— специальное имя, которое ищет JVM.String[] args— массив аргументов командной строки, передаваемых при запуске программы. Его можно назвать как угодно (args— принятое соглашение).
System.out.println("Hello, World!");
System — это класс из стандартной библиотеки; out — статическое поле, содержащее поток стандартного вывода; println — метод этого потока, который выводит аргумент с символом новой строки.
"Hello, World!" — это строковый литерал — последовательность символов, заключённая в двойные кавычки. Строки занимают центральное место в Java; когда освоитесь здесь, раздел Java Strings расскажет, что с ними можно делать.
Каждый оператор Java заканчивается точкой с запятой (;). Компилятор сообщит об ошибке, если вы её пропустите. Подробные правила — пробелы, фигурные скобки, идентификаторы — описаны в разделе Java Syntax.
Компиляция и запуск из терминала
Если JDK добавлен в PATH (см. предыдущие две главы), можно скомпилировать и запустить из любого терминала:
# Save the source as HelloWorld.java, then:
javac HelloWorld.java # compiles to HelloWorld.class
java HelloWorld # runs the bytecodeВывод:
Hello, World!Обратите внимание: в java передаётся HelloWorld, а не HelloWorld.class или HelloWorld.java. Лаунчер java принимает полное имя класса и находит соответствующий файл .class в classpath.
Попробуйте вариацию
Отредактируйте запускаемый пример, чтобы напечатать что-то другое — ваше имя, текущий год, многострочное сообщение — и нажмите Run. Несколько идей:
System.out.println("Hello from Java " + System.getProperty("java.version"));System.out.println("Line 1");
System.out.println("Line 2");System.out.printf("%s is %d years old%n", "Ada", 36);Последние два метода, которые стоит знать:
println— выводит аргумент и символ новой строки.print— какprintln, но без завершающей новой строки.printf— форматирование в стиле printf, как в C.%sвставляет строку,%d— целое число,%n— платформенный символ новой строки. Полный набор спецификаторов формата смотрите в разделе Java String Formatting.
Типичные ошибки начинающих
Несколько вещей, которые часто сбивают новичков:
- Несовпадение имени файла.
public class HelloWorldдолжен находиться в файлеHelloWorld.java. Иначеjavacзавершится с ошибкой. - Пропущенная точка с запятой. Каждый оператор требует её. Сообщения об ошибках компилятора обычно чётко указывают на строку.
Printlnvsprintln. Java чувствительна к регистру.- Типографские кавычки. Копирование кода с сайта, который «услужливо» заменил
"на", приведёт к непонятной ошибке компилятора.
Что дальше
Раздел How to Compile and Run a Java Program подробнее рассматривает, что на самом деле делают javac и лаунчер java, включая classpath, пакеты и использование jshell для быстрых экспериментов без полноценной программы. Чтобы комментировать код по мере его роста, смотрите раздел Java Comments.