Итак, после установки JDK создадим первое приложение на языке Java. Это приложение будет очень простым: оно будет принимать введенные данные от пользователя, обрабатывать и выводить некоторый результат.
Для того, чтобы создать простое приложение на Java нам понадобится текстовый редактор для набора кода программы, например, текстовый редактор Notepad++, но я бы рекомендовал скачать Intellij IDEA у них есть бесплатная версия которой более чем достаточно для обучения Java Core. Итак, откроем текстовый редактор и наберем в нем следующую программу:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// подключение используемых в программе внешних пакетов import java.io.Console; /* объявление нового класса */ public class Program{ public static void main (String args[]){ /* объявление нового метода */ String name; // переменная для имени Console con = System.console(); // получаем объект консоли для считывания с консоли name = con.readLine("Введите свое имя: "); // считываем введенное значение System.out.println("Добро пожаловать, " + name); } /* конец объявления нового метода */ }/* конец объявления нового класса*/ |
1 2 3 4 5 |
У некоторых код выше может вызвать ошибку при запуске его из IDE. Причина в том что данный пример работает только если JVM запускалась вручную через консоль, иначе у автоматически запущенной JVM вызов метода <strong>System.console()</strong> будет возвращать <strong>NULL</strong>. Альтернативным решением является реализация AlternativeProgram c помощью BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Пример можно посмотреть <a href="https://bitbucket.org/leodestroy/java-core-test-examples-by-leodev/src/68689d94b58d89d373e96f9559a06d54f1ed754f/Chapter%201.%20Introduction%20to%20Java/src/example1/Program.java?at=master&fileviewer=file-view-default">здесь </a> |
В начале файла идет секция с подключенными внешними пакетами с помощью директивы import , после которой идут названия подключаемых пакетов и классов. Пакеты представляют собой организацию классов и интерфейсов в общие группы или блоки.
И так как язык Java имеет Си-подобный синтаксис, каждая строка завершается точкой с запятой, а каждый блок кода помещается в фигурные скобки.
Далее идет определение класса программа. Классы объявляются следующим способом: сначала идет модификатор доступа public
, который указывает, что данный класс будет доступен всем, то есть мы сможем его запустить из командной строки. Далее идет ключевое слово class
, а потом название класса, и далее блок самого класса в фигурных скобках.
Классы являются теми кирпичиками, из которых состоит программа на Java. Особо следует остановиться на именах классов. Имена классов, а также их методов и переменных, еще называют идентификаторами. Идентификаторы представляют произвольную последовательность алфавитных и цифровых символов, а также символа подчеркивания, однако при этом названия не должны начинаться с цифры.
Кроме того, идентификаторы не должны представлять зарезервированные ключевые слова, например, такие как class
или int
и т.д.
Класс может содержать различные переменные и методы. В данном случае у нас объявлен один метод main. Как и в многих других си-подобных языках в программе на Java метод main является входной точкой программы, с него начинается все управление. Он обязательно должен присутствовать в программе.
Метод main также имеет модификатор public
. Слово static
указывает, что метод main — статический, а слово void
— что он не возвращает никакого значения. Позже мы подробнее разберем, что все это значит.
Далее в скобках у нас идут параметры метода — String args[]
— это массив args, который хранит значения типа String
, то есть строки. В данном случае ни нам пока не нужны, но в реальной программе это те строковые параметры, которые передаются при запуске программы из командной строки.
Блок метода main содержит собственно код нашей небольшой программы. Вначале объявляем переменную name, которая будет у нас хранить строку, то есть объект типа String: String name
. Java, как и другие Си-подобные языки, является регистрозависимым, поэтому следующие два объявления целочисленных переменных String name
и String Name
будут обозначать две разных переменных.
Далее идет создание переменной консоли, которая позволит взаимодействовать с консолью: Console con = System.console();
. Так как класс Console находится в библиотеке классов в пакете java.io
, то в начале файла мы подключаем этот класс директивой импорта import java.io.Console
Затем с помощью метода con.readLine
выводится приглашение к вводу имени и ожидается, пока пользователь не введет имя. Так как данный метод возвращает введенное пользователем значение, то мы его можем присвоить переменной name.
И в конце введенное имя выводится на экран с помощью класса System
и метода println
. Хотя System, как и Scanner, является классом, размещенном в одном из пакетов, но нам не нужно его подключать с помощью директивы импорта. Так как System находится в пакете java.lang, все классы которого автоматически подключаются в программу.
Кроме собственно кода программы здесь использованы пояснения к коду или комментарии. Для создания однострочного комментария используется двойной слеш (//), а для создания многострочного комментария конструкция /* текст_комментария */
. При компиляции программы все комментарии игнорируются и служат лишь для пояснения действий программисту.
Итак, программа написана. Сохраним ее в файл под названием Program.java, где java — расширение файла, так как файл, содержащий публичный (public) класс должен называться так же, как и сам класс — в нашем случае Program. И создадим для нее специальный каталог, например, на диске С под названием Java. Теперь нам надо запустить программу.
После установки JDK все файлы по умолчанию помещаются в каталог C:\Program Files\Java\jdk[номер_версии] (при использовании ОС Windows). В моем случае это каталог C:\Program Files\Java\jdk1.8.0. Если мы откроем в нем подкаталог bin, то мы сможем увидеть в нем ряд утилит. Нас прежде всего интересует утилита компилятора javac. Чтобы скомпилировать класс программы, нам надо передать ее код этому компилятору.
После компиляции нам надо запустить скомпилированный в байт-код класс с помощью утилиты java, которая также находится в подкаталоге bin.
Откроем командную строку (в Windows) или консоль в Linux и введем там соответствующие команды. Для ОС Windows это будет выглядеть следующим образом:
Первым делом мы переходим в каталог, где лежит наш файл с программой: cd C:\Java
(В данном случае файл находится в каталоге C:\Java)
Затем компилируем программу: C:\Java>"C:\Program Files\Java\jdk1.8.0\bin\javac" Program.java
. Обратите внимание, что весь путь к компилятору javac берется в кавычки, а затем через пробел идет название нашего файла, который содержит класс программы.
После этого программа компилируется в байт-код,и вы сможете увидеть в каталоге C:\Java новый файл Program.class. Это и будет файл с байт-кодом программы. Теперь нам надо его запустить. И следующим шагом идет его выполнение с помощью утилиты java: C:\Java>"C:\Program Files\Java\jdk1.8.0\bin\java" Program
. Здесь уже расширение у файла не надо использовать. И дальше идет непосредственно выполнение того кода, который у нас размещен в методе main.
Использование классом
Теперь видоизменим вышесозданную программу. Изменим ее следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Program{ public static void main (String args[]){ Calculator calc = new Calculator(); calc.add(2,3); } } class Calculator{ public void add(int x, int y){ int z = x+y; System.out.printf("Сумма %d и %d равна %d", x, y, z); } } |
Здесь у нас уже два класса. Однако сколько бы мы классов не использовали, всегда будет один главный, в котором имеется точка входа в программу — метод main. И главный класс использует вспомогательный класс Calculator. В этом классе имеется один метод add
, который складывает два числа и выводит результат на консоль.
Перекомпилируем программу и запустим ее:
Программа выведет нам результат, а в папке программ0ы (в каталоге C:/Java) мы сможем увидеть, что там располагаются два скомпилированных класса: Program.class и Calculator.class, поскольку в нашей программе используются два класса.