Как пишут на java

Время на прочтение
6 мин

Количество просмотров 40K

Вступление. Краткая история и особенности языка

Как-то давно мы с моим товарищем и коллегой Егором готовили обучающий курс по Java Core. Но как-то не срослось и это дело не было доведено до какого-либо логического конца. И вот, спустя время, я решил, что не стоит пропадать добру и по-этому запускаю серию статей про Java Core для самых маленьких.

Начало разработки языка было положено еще в 1991 году компанией Sun Microsystems, Inc. Вначале язык был назван Oak (Дуб), но в 1995 он был переименован в Java. Публично заявили о создании языка в 1995 году. Причиной создания была потребность в независящем от платформы и архитектуры процессора языке, который можно было бы использовать для написания программ для бытовой электротехники. Но поскольку в таких устройствах применялись различные процессоры, то использование популярных на то время языков С/С++ и прочих было затруднено, поскольку написанные на них программы должны компилироваться отдельно для конкретной платформы.

Особенностью Java, которая решила эту проблему, стало то, что компилятор Java выдает не машинный исполняемый код, а байт-код — оптимизированный набор инструкций, которые выполняются в так называемой виртуальной машин Java (JVM — Java Virtual Machine). А на соответствующую платформу предварительно устанавливается JVM с необходимой реализацией, способная правильно интерпретировать один и тот же байт-код. У такого подхода есть и слабые стороны, такие программы выполняются медленнее, чем если бы они были скомпилированы в исполняемый код.

Установка программного обеспечения — JDK

В первую очередь, нам нужно установить на компьютер так называемую JDK (Java Development Kit) — это установочный комплект разработчика, который содержит в себе компилятор для этого языка и стандартные библиотеки, а виртуальную машину Java (JVM) для вашей ОС.

Для того чтобы скачать и установить JDK открываем браузер, и в строке поиска Google вводим “download JDK” или переходим по этой ссылке.

Скролим ниже и находим таблицу с вариантами скачивания JDK. В зависимости от нашей операционной системы выбираем файл для скачивания.

Процесс установки для ОС Windows имеет несколько этапов. Не стоит пугаться, все очень просто и делается в несколько кликов. Вот здесь подробно описан процесс установки. Самое важное для пользователей Windows это добавить системную переменную JAVA_HOME. В этой же статье достаточно подробно расписано как это сделать (есть даже картинки).

Для пользователей MacOS также стоит добавить переменную JAVA_HOME. Делается это следующим образом. После установки .dmg файла JDK переходим в корневую папку текущего пользователя и находим файл .bash_profile. Если у вас уже стоит zsh то ищем файл .zshenv. Открываем этот файл на редактирование и добавляем следующие строки:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
export PATH=${PATH}:${JAVA_HOME}

Здесь обратите внимание на версию JDK указанную в пути — jdk1.8.0_271.jdk. Могу предположить, что у вас она будет отличаться, поэтому пройдите по указанному пути и укажите свою версию. Сохраняем изменения и закрываем файл, он нам больше не понадобится.

Теперь важно проверить правильность установки JDK. Для этого открываем командную строку, в случае работы на Windows, или терминал для MacOS. Вводим следующую команду: java -version Если вы все сделали правильно, вы увидите версию установленного JDK. В ином случае вы, скорее всего, допустили где-то ошибку. Советую внимательно пройтись по всем этапам установки.

Установка IDE

Теперь нам нужно установить среду разработки, она же IDE (Integrated development environment). Что собой представляет среда разработки? На самом деле она выглядит как текстовый редактор, в котором мы можем вводить и редактировать текст. Но помимо этого, этот текстовый редактор умеет делать проверку синтаксиса языка на котором вы пишете. Делается это для того чтобы на раннем этапе подсказать вам о том, что вы допустили ошибку в своем коде.

Также среда разработки содержит в себе компилятор. Компилятор — это специальный инструмент, который будет превращать код, который вы пишете, в машинный код или близкий к машинному коду.

Кроме этого, среда разработки поддерживает отладчики которые помогают править и отлаживать ваш код в случае ошибки. Скажем так, это были описаны основные возможности IDE. Современные IDE предоставляют огромное количество инструментов, которые могут помочь в написании, отладке, автоматической  генерации кода и решить множество других проблем.

Для начала нам нужно выбрать и среду разработки. Их довольно таки много, и самыми популярными из них являются: IntelliJ IDEA, NetBeans, Eclipse. Для себя я выбираю IntelliJ IDEA. Она является самой удобной на мой взгляд, и хоть она и платная, на официальном сайте можно найти бесплатную версию которая называется Community. Этой версии будет вполне достаточно для изучения основ Java. Вообщем будем работать в IntelliJ IDEA.

Итак, открываем браузер, в поисковой строке вводим «Download IntelliJ IDEA Community» или переходим по этой ссылке. Выбираем версию ОС и качаем версию Community.

В установке IntelliJ IDEA нет ничего военного. На крайний случай на ютубе есть множество видео о том, как установить эту программу.

Первая программа

Теперь мы готовы создать нашу первую программу. В окошке запустившийся IDE нажимаем New Project.

В новом окошке в левой панели выбираем Java.

Обратите внимание! В верхнем окошке, справа, возле надписи «Project SDK:» должна находится версия Java, которую вы установили вместе с JDK. Если там пусто, то вам нужно будет указать путь к вашему JDK вручную. Для этого в выпадающем списке нажмите «Add JDK…» и укажите путь к вашему JDK, который был предварительно установлен.

Теперь можем нажать на кнопку Next. В следующем окошке, вверху, поставьте галочку “Create project from template” и выберите “Command Line App”. И снова нажимаем Next.

Дальше нам нужно указать имя программы. У меня это будет Hello World, желательно чтобы имя проекта было введено латиницей, и на английском языке. 

Примечание. Все программы, имена программ, принято писать на английском языке, и желательно придерживаться такого стиля, что является хорошим тоном в программировании.

После указываем путь к проекту программы. 

Далее, нам нужно указать базовый пакет нашей программы. О пакетах я расскажу вам позже, обычно компании используют свое имя Интернет-домена в обратном порядке, но вы можете написать, например, свои имя и фамилию через точку в нижнем регистре (маленькими буквами), тоже латиницей. Я же использую псевдоним. Когда все поля будут заполнены — нажимаем “Finish”.

После этого вы увидите главное окно IDE, в котором уже будет создана ваша первая, почти готовая консольная программа.

Это окно, то что вы будете видеть 80-90%, а иногда и 100% времени, работая программистом.

Для того чтобы закончить ваше первое приложение, останется добавить строчку кода System.out.print(«Hello world!»); как показано на скриншоте.

Чтобы скомпилировать и запустить на выполнение вашу программу, вам  нужно нажать кнопочку с зеленым треугольничком на верхней панели справа, или в меню найти пункт Run -> Run “Main”. И внизу на нижней панели, под окном редактора, в консоли, вы увидите результат выполнения вашей программы. Вы увидите надпись Hello World! Поздравляю, вы написали свою первую программу на Java.

Разбираем первую программу

В своем первом приложении вы можете увидеть много непонятных символов и слов, но на данном этапе вы должны воспринять их как данность, позже, в следующих частях, я расскажу о каждом из них, и зачем они нужны. На данном этапе вам нужно понять что это стандартные составляющие любого Java-приложения, и в последующих приложениях эти компоненты будут изменяться минимально.

Пройдемся по порядку:

В начале мы видим package com.zephyr.ventum; — это объявление пакета, и это постоянный атрибут файлов с исходным кодом в Java. Простыми словами, это локация вашего файла в проекте и любой .java файл должен начинаться с подобной строки.

Ниже, public class Main { — это стандартное объявление класса в Java, где public — это модификатор доступа который дает программисту возможность управлять видимостью членов класса, class — является ключевым словом объявляющим класс, Main — это имя класса. Все определение класса и его членов должно располагаться между фигурными скобками { }. Классы мы рассмотрим немного позже, только скажу что в Java все действия программы выполняются только в пределах класса.

Ключевое слово — это слово зарезервированное языком программирования. Например, package — это тоже ключевое слово.

Еще ниже, public static void main(String[] args) {  — эта строка является объявлением метода main. Метод (или часто говорят функция) main это точка входа в любой java-программер. Именно отсюда начинается выполнение вашего кода. В проекте может быть несколько методов main, но мы должны выбрать какой-то один для запуска нашей программы. В следующих статьях мы еще вернемся к этому. Сейчас же у нас только один метод main.

Фигурные скобки {} у метода main обозначаю начало и конец тела метода, весь код метода должен располагаться между этими скобками. Аналогичные скобки есть и у класса Main.

Следующая строка является  // write your code here  однострочным комментарием.

Комментарием является текст который игнорируется компилятором. По-этому с помощью комментариев вы можете оставлять в коде подсказки для себя и других, кто будет читать ваш код, или же для документирования вашего кода. Существует несколько видов комментариев, основными из них являются однострочный, и многострочный.

Многострочный комментарий будет выглядеть следующим образом:

/* write 
	 your 
	 code
	 here */

Мы просто располагаем несколько строк между символами /* и */

System.out.print("Hello world!"); — строка которая находится внутри метода main является командой, которая выводит в консоль строку «Hello world!»

Обратите внимание что в конце стоит точка с запятой, в языке Java команды должны заканчиваться точкой с запятой.

Затем мы закрываем тело нашего метода main } а также закрываем класс Main }.

На этом статья подходит к концу. Автором конкретно этого материала является Егор и все уменьшительно ласкательные формы слов сохранились в первозданном виде.

В следующей статье мы поговорим о типах данных в Java.


Загрузить PDF


Загрузить PDF

Java — это объектно-ориентированный язык программирования, созданный Джеймсом Гослингом в 1995 году, что означает выражение переменных как объектов с полями (которые являются атрибутами, описывающими объект) и методов (действия, которые объект может совершать). Java — это язык, позволяющий писать программы, которые могут быть запущены под любой виртуальной машиной Java. Поскольку это достаточно объемный по количеству слов язык программирования, его достаточно просто понять и изучить даже новичкам. В этом руководстве изложено введение к программированию на Java.

  1. Изображение с названием 91968 1

    1

    Для того чтобы начать писать программы на Java, в первую очередь установите среду разработчика. Многие программисты используют интегрированную среду разработки (англ. Integrated development environment — IDE), такую как Eclipse или Netbeans, но можно создать программу и без нее.

  2. Изображение с названием 91968 2

    2

    Любой программы по типу Блокнота будет достаточно для Java-программирования. Некоторые программисты предпочитают использовать текстовые редакторы на основе vim и emacs. Также существует достаточно хороший текстовый редактор, который можно установить как на ОС Windows так и Linux (Mac, Ubuntu и так далее) — Sublime Text. Его мы и будем использовать в данном обзоре.

  3. Изображение с названием 91968 3

    3

    Реклама

  1. Изображение с названием 91968 4

    1

    Для начала мы создадим программу, которая будет выдавать надпись Hello World. Создайте новый файл в текстовом редакторе и сохраните его как «HelloWorld.java». «HelloWorld» — это имя класса, которое должно совпадать с названием файла, это важно.

  2. Изображение с названием 91968 5

    2

    Задайте класс и основной метод. Основной метод public static void main(String[] args) будет применяться при каждом запуске программы и будет устанавливаться в каждой последующей программе Java.

    public class HelloWorld {
        public static void main(String[] args) {
        }
    }
    
  3. Изображение с названием 91968 6

    3

    Введите строку кода «Hello World.»

    System.out.println("Hello World.");
    
    • Рассмотрим компоненты этой строки кода:
      • System обращается к системе с указанием выполнять определенные действия.
      • Out сообщает системе, что мы собираемся ввести какие-то данные.
      • Println строка ввода — сообщает системе о необходимости вывести значение на экран.
      • Скобки вокруг ("Hello World") обозначают, что метод System.out.println () выбирает это значение в качестве параметра.
    • Возьмите на заметку несколько правил, которые нужно соблюдать, программируя на языке Java:
      • В конце каждой строчки кода нужно ставить точку с запятой.
      • Java чувствителен к регистру, поэтому писать значения метода, переменных, и имя класса необходимо с учетом него.
      • Блоки кода, которые относятся к определенному методу, разделяются фигурными скобками.
  4. Изображение с названием 91968 7

    4

    Соедините все вместе. В конечном итоге ваша программа Hello World должна выглядеть следующим образом:

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello World.");
        }
    }
    
  5. Изображение с названием 91968 8

    5

    Сохраните файл и откройте командную строку или терминал, чтобы скомпилировать программу. Зайдите в папку, где вы сохранили файл HelloWorld.java и введите в Javac (оптимизирующий компилятор языка java) HelloWorld.java. Таким образом, вы дадите знать компилятору, что хотите преобразовать файл. Если в процессе будут всплывать ошибки, компилятор уведомит вас о том, что вы сделали не так. В идеале у вас вообще не должно быть никаких уведомлений от компилятора в процессе преобразования файла. По окончании компиляции заглянете в папку, где был сохранен файл HelloWorld.java, — там должен появиться файл HelloWorld.class. Его и будет использовать для запуска виртуальная машина Java.

  6. Изображение с названием 91968 9

    6

    Запустите программу. Наконец-то мы добрались до этого момента! В командной строке или терминале введите in java HelloWorld. Виртуальная машина поймет таким образом, что вы хотите запустить класс HelloWorld. В консоли должна появиться надпись HelloWorld.

  7. Изображение с названием 91968 10

    7

    Поздравляем, вы создали свою первую программу на языке Java.

    Реклама

  1. Изображение с названием 91968 11

    1

    Теперь нам нужно расширить свою программу Hello World, чтобы она воспринимала ввод данных пользователем. В нашей программе мы напечатали строку, которая видна пользователю, но в интерактивных программах пользователи вводят данные в приложениях. Наша задача — расширить программу, чтобы она запрашивала у пользователя имя, а затем приветствовала его по имени.

  2. Изображение с названием 91968 12

    2

    Импортируйте класс Scanner. В Java есть встроенные библиотеки, к которым мы имеем доступ, но нам нужно импортировать их. Одной из таких библиотек является java.util, содержащая объект Сканер, который необходим нам для ввода данных пользователем. Для того, чтобы импортировать этот класс, нам нужно добавить следующую строчку в исходный код.

    import java.util.Scanner;
    • Так мы сообщим программе, что хотим использовать объект Scanner, который существует в пакете java.util.
    • Если мы хотим получить доступ ко всем объектам в библиотеке java.util., нам нужно просто импортировать в начале кода java.util.*.
  3. Изображение с названием 91968 13

    3

    Необходимо ввести новую переменную в методе для объекта Scanner. Java — объектно-ориентированный язык программирования, который оперирует переменными через объекты. Сканер — это пример объекта, имеющего поля и методы. Для того чтобы использовать класс Scanner, необходимо создать новый объект Scanner, с помощью которого мы сможем заполнять поля. Для этого прописываем следующее:

    Scanner userInputScanner = new Scanner(System.in);
    • userInputScannerимя объекта-сканера, которое мы только что установили. Возьмите на заметку, что имя написано в «горбатом регистре». Это соглашение на применение имен переменных в Java.
    • Мы используем новый оператор для того, чтобы создать новый экземпляр объекта. В нашем случае мы создали новый экземпляр объекта Scanner, указав в коде new Scanner(System.in).
    • Объект Scanner подхватывает параметр, сообщающий объекту, что нужно просканировать. В этом случае System.in является параметром. System.in сообщает программе, что необходимо просканировать введенные пользователем данные.
  4. Изображение с названием 91968 14

    4

    Далее следует сделать понятным для пользователя необходимость ввода данных в консоли. Это можно сделать с помощью команды System.out.print или System.out.println.

    System.out.print("What's your name? ");
  5. Изображение с названием 91968 15

    5

    Сделайте так, чтобы объект Scanner подхватил следующую строчку, которую введет пользователь, и сохранил ее в виде переменной. Scanner всегда должен собирать данные, введенные пользователем. Нижеследующая строчка кода будет давать команду объекту Scanner распознать написанное пользователем имя и сохранить его в виде переменной:

    String userInputName = userInputScanner.nextLine();
    • В Java подтверждение использования объектного метода задается параметрами objectName.methodName(parameters). Строка же кода userInputScanner.nextLine() вызывает объект Scanner с помощью присвоенного ему имени, а затем мы вызываем метод nextLine(), которому нельзя задать параметры.
    • Возьмите на заметку, что мы сохраняем следующую строчку в другом объекте — String. Он обозначается в коде userInputName
  6. Изображение с названием 91968 16

    6

    Напечатайте приветствие для пользователя. После того, как мы сохранили его имя, мы можем напечатать приветствие для этого пользователя. Помните строчку System.out.println("Hello World."); которую мы использовали в основном файле с расширением class? Весь написанный нами код должен располагаться над этой строчкой. Теперь мы можем изменить эту строчку, чтобы она выводила следующий текст:

    System.out.println("Hello " + userInputName + "!");
    • Необходимо ввести «привет», имя пользователя и восклицательный знак с помощью строки кода "Hello " + userInputName + "!". Это называется объединение строк.
    • У нас есть три строчки: привет, «, userInputName, и «!». Строчки в Java являются неизменными и не поддаются редактированию. Поэтому объединив их, мы создали новую строчку, в которой содержится приветствие.
    • После чего мы используем эту новую строчку в качестве параметра для System.out.println.
  7. Изображение с названием 91968 17

    7

    Сведите все вместе и сохраните. Наш код должен выглядеть примерно так:

    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner userInputScanner = new Scanner(System.in);
            System.out.print("What's your name? ");
            String userInputName = userInputScanner.nextLine();
            System.out.println("Hello " + userInputName + "!");
        }
    }
  8. Изображение с названием 91968 18

    8

    Скомпилируйте и запустите. Зайдите в командную строку или терминал и запустите те же команды, которые мы использовали для HelloWorld.java. Для начала нужно скомпилировать программу с помощью оптимизирующего компилятора языкаjavac HelloWorld.java. После чего мы сможем запустить эту программу java HelloWorld.

    Реклама

Советы

  • Java — объектно-ориентированный язык программирования, поэтому полезно почитать об основах объектно-ориентированных языках программирования.
  • Объектно-ориентированное программирование имеет множество функций, которые являются специфичными для его парадигмы. Три наиболее важные:
    • Инкапсуляция — способность ограничивать доступ к определенным компонентам объекта. В Java существуют публичная, приватная и защищенная модификации для полей и методов.
    • Полиморфизм — свойство объектов принимать разные идентификаторы. В Java объект может быть выражен через другой объект, чтобы использовать уже его метод.
    • Наследование — способность использовать поля и методы из другого класса в рамках той же иерархии, что и текущий объект.

Реклама

Об этой статье

Эту страницу просматривали 139 048 раз.

Была ли эта статья полезной?

Юрий Пономарев

Юрий Пономарев


консультант по программным продуктам Oracle Центра технической поддержки компании РДТЕХ

Java – один из самых востребованных языков программирования в мире и один из двух официальных языков программирования, используемых в разработке Android (другой – Kotlin). Разработчики, знакомые с Java, весьма востребованы и способны создавать широкий спектр различных приложений, игр и инструментов. С помощью этой краткой статьи по Java для начинающих вы сможете сделать свои первые шаги к тому, чтобы стать одним из таких разработчиков. Мы рассмотрим все, что вам нужно знать, чтобы начать работу, и поможем вам создать свое первое простое приложение.

Java-это объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems в 1990-х годах (позже купленной Oracle).

Понятие «объектно-ориентированный» относится к способу написания структурного кода Java, а именно: разделение кода на так называемые «классы», которые запускаются вместе, чтобы обеспечить согласованное порождение объектов. Мы обсудим это позже, но достаточно сказать, что это приводит к универсальному и организованному коду, который легко редактировать и перепрофилировать.

Java находится под влиянием C и C++, поэтому она имеет много общего с этими языками (и C#). Одним из больших преимуществ Java является то, что он «платформенно-независимый». Это означает, что код, который вы пишете на одной платформе, можно легко запустить на другой. Это называется принципом «пишем один раз, запускаем где угодно» (хотя на практике это не всегда так просто, как кажется).

Чтобы запустить и использовать Java, вам нужно три вещи:

  • JDK – Java Development Kit
  • JRE – Java Runtime Environment
  • JVM – Java Virtual Machine

Виртуальная машина Java (JVM) гарантирует, что у ваших приложений Java есть доступ к минимальным ресурсам, необходимым для их запуска. Именно благодаря JVM программы Java так легко запускаются на разных платформах.

Среда исполнения Java (JRE) предоставляет собой «контейнер» для всех этих элементов и кода для запуска приложения. JDK – это «компилятор», который интерпретирует сам код и выполняет его. В JDK также есть инструменты разработчика, необходимые для написания кода Java (как и следует из названия).

Хорошая новость заключается в том, что разработчикам нужно только позаботиться о загрузке JDK, поскольку он поставляется вместе с двумя другими компонентами.

Как начать писать на Java

Если вы планируете разрабатывать приложения на Java на своем настольном компьютере, то вам нужно будет загрузить и установить JDK.

Вы можете получить последнюю версию JDK непосредственно с сайта Oracle. Как только вы установите его, ваш компьютер будет иметь возможность понимать и запускать код на Java. Тем не менее, вам все равно понадобится некоторое вспомогательное ПО, чтобы было действительно удобно писать код. Это так называемая «интегрированная среда разработки» или IDE: интерфейс, используемый разработчиками для ввода текста кода и вызова JDK.

При разработке для Android вы будете использовать IDE Android Studio. Она не только послужит интерфейсом для кода на Java (или Kotlin), но и станет мостом для доступа к специфичным для Android вызовам из SDK.

Для целей нашего краткого руководства по Java может быть и проще написать свой код непосредственно в приложении-компиляторе Java. Они могут быть скачаны для Android и iOS, можно даже найти веб-приложения, которые работают в вашем браузере. Эти инструменты предоставляют все необходимое в одном месте и позволяют сразу начать тестирование кода. Например, compilejava.net.

Насколько легко научиться программированию на Java?

Если вы новичок в разработке на Java, то ваши опасения вполне понятны. Так насколько же легко изучить Java?

Этот вопрос имеет несколько субъективную природу, но лично я бы отнес Java к языкам, не самым простым для изучения. Хотя он проще, чем C++, и часто описывается как более удобный для пользователя, но он, безусловно, не столь прост, как такие его конкуренты, как Python или BASIC, которые больше подходят для изучения начинающим программистам.

C# также немного проще по сравнению с Java, хотя они очень похожи.

Конечно, задавшись конкретной целью – стать разработчиком приложений для Android, – проще всего сразу начать с языка, который уже поддерживается этой платформой.

У языка Java есть свои особенности, но его, безусловно, можно изучить, и как только вы его освоите, вам откроется множество возможностей. А поскольку Java имеет много общего с C и C#, вы сможете перейти на эти языки без особых усилий.

Каков синтаксис Java?

Прежде чем мы погрузимся в самую суть этого руководства по Java для начинающих, стоит уделить некоторое время изучению синтаксиса Java.

Синтаксис Java относится к способу написания конкретных алгоритмов. Java очень принципиален в этом вопросе, и, если вы не пишете код определенным образом, то ваша программа не будет работать!

На самом деле я написал целую статью о синтаксисе Java для разработки Android, кратко перечислю особенности синтаксиса:

  • Большинство строк должно заканчиваться точкой с запятой «;».
  • Исключение составляет строка, открывающая новый блок кода. Она должна начинаться открытой фигурной скобкой «{». В качестве альтернативы эту открытую скобку можно поместить на новую строку под оператором. Блоки кода – это фрагменты кода, которые выполняют определенные, отдельные задачи.
  • Код внутри блока кода должен иметь отступ, чтобы отделить его от остальных.
  • Открытые блоки кода должны быть закрыты закрывающей фигурной скобкой «}».
  • Комментарии – это строки, которым предшествуют символы «//».

Если вы нажимаете кнопку «запустить» или «скомпилировать» и получаете ошибку, то есть большая вероятность, что вы где-то пропустили точку с запятой!

Вы никогда не перестанете делать это, и это никогда не перестанет вас раздражать. Расслабьтесь!

С этими знаниями мы сможем глубже погрузиться в руководство по Java!

Основы Java: ваша первая программа

Зайдите на  compilejava.net, и вас встретит редактор с кучей готовых примеров.

(Если же вы предпочитаете использовать другую IDE или стороннее приложение, это тоже прекрасно! Скорее всего, ваш новый проект будет состоять из аналогичного кода).

Удалите все, кроме следующего:

public class HelloWorld
{
  public static void main(String[] args)
  {
  }
}

Это то, что мы, программисты, мы называем «шаблоном» (этот код скопирован из учебника Java от Фила Данфи). Шаблонный код – так можно назвать любой код, который встречается внутри практически любой программы.

Первая строка здесь определяет «класс», который по сути является модулем кода. Затем нам нужен метод внутри этого класса, который представляет собой небольшой блок кода, выполняющий задачу. В каждой программе Java должен быть метод main, так как он сообщает Java, где начинается программа.

Об остальном поговорим чуть ниже, не беспокойтесь. Все, что нам нужно знать для этого урока Java прямо сейчас, – это то, что код, который мы действительно хотим запустить, должен быть помещен в фигурные скобки под словом «main».

Поместите сюда следующий оператор:

System.out.print("Hello world!");

Этот оператор напишет слова: «Hello world!» на вашем экране. Нажмите «Compile & Execute» и вы увидите его в действии.

Поздравляю! Вы только что написали свое первое Java-приложение!

Переменные в Java

Теперь пришло время рассказать о некоторых более важных вещах, лежащих в основе Java. Мало что может быть более фундаментальным в программировании, чем обучение использованию переменных!

Переменная по сути является «контейнером» для некоторых данных. Это означает, что вы выберете слово, которое будет представлять какое-то значение. Нам также необходимо определить переменные, основанные на типе данных, на которые они будут ссылаться.

Вот три основных типа переменных, которые мы собираемся ввести в этом руководстве по Java:

  • Целые числа (integers) – как целые числа.
  • Плавающие точки (floats) – или «переменные с плавающей точкой». Они содержат все числа, в том числе те, которые представляют десятичные дроби. «Плавающая точка» относится к десятичному разряду.
  • Строки (strings)– строки содержат буквенно-цифровые символы и символы. Обычно строка используется для хранения чьего-то имени или, возможно, предложения.

Как только мы определяем переменную, мы можем вставить ее в наш код, чтобы изменить выходные данные. Например:

public class HelloWorld
{
  public static void main(String[] args)
  {
    String name = "Adam";
    System.out.print("Hello " + name);
  }
}

В этом примере кода мы определили строковую переменную с именем name. Мы сделали это, используя тип данных String, за которым следует имя нашей переменной, а затем данные. Когда вы помещаете что-то в двойные кавычки, то Java интерпретирует это дословно как строку.

Теперь мы печатаем на экране, как и раньше, но на этот раз заменяем «Hello world!» на «Hello + имя». Этот код показывает строку «Hello», за которой следует любое значение, содержащееся в следующей строковой переменной!

Самое замечательное в использовании переменных заключается в том, что они позволяют нам манипулировать данными, чтобы наш код мог вести себя динамически. Изменяя значение name, вы можете изменить поведение программы, не изменяя никакого фактического кода!

Условные операторы в Java

Еще одна из самых важных основ Java – это работа с условными операторами.

Условные операторы используют блоки кода, которые выполняются только при определенных условиях. Например, мы можем захотеть предоставить специальные пользовательские права основному пользователю нашего приложения.

Посмотрите на следующий код:

public class HelloWorld
{
  public static void main(String[] args)
  {
    String name = "Adam";
    System.out.print("Hello " + name +"rn");
    
    if (name == "Adam") 
    {
      System.out.print("Special user priveledges granted!");
    }
  }
  
}

Запустите этот код, и вы увидите, что специальные разрешения предоставлены. Но, если вы измените значение name на что-то другое, то код не будет работать.

В этом коде используется оператор if. Он проверяет, является ли утверждение, содержащееся в скобках, истинным. Если это так, то будет запущен следующий блок кода. Не забудьте сделать отступ в коде, а затем закрыть блок в конце! Если оператор в скобках имеет значение false, то код просто пропустит этот раздел и продолжит работу с закрытых скобок.

Обратите внимание, что при наложении условия на данные мы используем два знака «=». Вы же используете только один, когда присваиваете какие-то данные переменным.

Методы на Java

Еще одна простая концепция, которую мы можем ввести в этом руководстве Java – это использование методов. Это даст вам немного больше понимания того, как структурирован Java-код и что с ним можно сделать.

Все, что мы собираемся сделать, – это взять часть кода, который мы уже написали, а затем поместить его в другой метод вне метода main:

public class HelloWorld
{
  
  public static void main(String[] args)
  {
    String name = "Adam";
    System.out.print("Hello " + name +"rn");
        if (name == "Adam") {
      grantPermission();
    }
         
  }
  
  static void grantPermission()
  {
       System.out.print("Special user priveleges granted!");
  }
  
}

Мы создали новый метод в строке, которая начинается со static void. Это означает, что метод определяет функцию, а не свойство объекта, и что он не возвращает никаких данных.

Но все, что мы вставляем в следующий блок кода, теперь будет выполняться каждый раз, когда мы «вызываем» метод, записывая его имя в нашем коде: grantPermission(). Затем программа выполнит этот блок кода и вернется к точке, из которой она вышла.

Если бы мы написали вызов grantPermission() несколько раз, то сообщение «Special user priveleges granted» также отобразилось бы несколько раз. Именно это делает методы такими фундаментальными основами Java: они позволяют выполнять повторяющиеся задачи, не записывая код снова и снова.

Передача аргументов в Java

Но самое замечательное в методах то, что они могут принимать переменные и манипулировать ими. Мы сделаем это, передав переменные в наши методы как «строки». Вот для чего и нужны скобки, следующие за названием метода.

В следующем примере я создал метод, который получает строковую переменную, названную nameCheck. Затем я могу обратиться к nameCheck из этого блока кода, и ее значение будет равно тому, что я поместил в фигурные скобки, когда вызвал метод.

Для этого руководства по Java я передал значение name методу и поместил туда оператор if. Таким образом, мы можем проверять несколько имен подряд, не набирая один и тот же код снова и снова.

Надеюсь, это даст вам представление о том, насколько мощными могут быть методы!

public class HelloWorld
{
  
  public static void main(String[] args)
  {
    String name = "Adam";
    System.out.print("Hello " + name +"rn");
 
    checkUser(name);
    
  }
  
  static void checkUser(String nameCheck)
  {
    if (nameCheck == "Adam")
    {
       System.out.print("Special user priveledges granted!");
    }
  }
  
}

В завершение

Надеюсь, теперь у вас есть хорошее представление о том, как изучать Java. Вы даже можете сами написать какой-нибудь простой код: используя переменные и условные операторы, вы действительно можете заставить Java делать некоторые интересные вещи уже сейчас.

Следующий этап состоит в понимании объектно-ориентированного программирования и классов. Это понимание есть то, что действительно дает Java и подобным языкам их силу, но поначалу может быть немного сложным для осмысления.

Перевод статьи «Java tutorial for beginners: Write a simple app with no previous experience»

Дисклаймер

Сразу хочу вас предупредить, чтобы стать настоящим java разработчиком с нуля вам нужно будет потратить в разы больше его времени. Как преподаватель java в Сбер Университете, по своему опыту могу сказать, чтобы точно получить хорошую работу на изучение языка и его инфраструктуры вы должны потратить 5-6 месяцев – при этом заниматься минимум 40 часов в неделю.

Начинаем!

История языка и предпосылки к лидерству

Почему Java так популярен? Во-первых это старый язык по меркам сферы ИТ. Ему уже более 25 лет. За это время было написано огромное количество приложений и библиотек, сформировано, наверное, самое многочисленное комьюнити программистов, которое поможет найти ответ на любой вопрос. Во-вторых java создавался с прицелом на высокую надежность: в то время доминировали языки C и C++, которые обладали высоким порогом входа – нужно было внимательно следить за за каждой строчкой. Легко можно было выстрелить себе в ногу, неправильно использовав множественное наследование, не почистив правильно память и т.д.

В Java учли эти ошибки. В нем сделали удобный автоматический сборщик мусора, добавили развитую систему исключений: появились исключения типа checked, которые существенно увеличили надежность кода. Были созданы более удобные механизмы работы с многопоточностью, а так же использована статическая типизация.

Все это позволило сделать Java в свое время самым надежным языком на рынке, поэтому многие компании выбрали его в качестве основного и не прогадали.

Одной из киллер-фич был подход к исполнению кода. Он не компилировался напрямую в бинарники. Компилятор создавал на основе исходного кода байт-код, который уже в свою очередь с помощью специального приложения – JAVA машины исполнялся на компьютере. Такой подход давал ряд существенных преимуществ: программист мог запустить один и тот же код по разными операционными системами, процессорами вообще без каких-либо изменений!

Не надо было перекомпилировать код под новую платформу, соответственно администратор без привлечения программистов мог осуществить перенос приложения на новый сервис с абсолютно другой архитектурой за пару часов.

Второе важное преимущество – с каждой новой версией Java-машина получала новые возможности, которые позволяли оптимизировать код на лету. Один и тот же код с каждой новой версией выполнялся все быстрее и быстрее вообще без вмешательства программистов!

Недавно java перешла на новый релизный цикл – каждая новая версия выходит через полгода. Это позволяет быстрее доставлять новые возможности в язык и практически полностью сократить отставание языка от других jvm языков.

Возможно, сейчас многие из преимуществ непонятны, но изучая java вы поймете, насколько они замечательные и как Java в свое время определила развитие ИТ.

Подготовка окружения

В первую очередь нам надо скачать JDK – это та самая виртуальная машина, а также набор утилит, которые позволят собирать код. После чего мы уже можем начинать программировать в любимом редакторе. Если у вас такового не имеется, могу порекомендовать скачать и установить – IntelliJ IDEA Community. Это самый популярный редактор исходного кода на Java, базовая версия которого распространяется бесплатно.

После того как мы скачали все и запустили редактор, приступим к изучению.

В java все является объектом. Что такое объект? Это некоторая сущность в которой описано ее состояние с помощью каких-либо переменных, а также описано ее поведение с помощью функций. Рассмотрим все на примере из реального мира.

У нас есть автомобиль, у него много характеристик. Мы абстрагируемся от них, нас интересует только два параметра: текущая скорость и максимальная скорость. В мире объектно-ориентированного программирования этот подход так и называется – абстракция. Какое поведение мы ожидаем от автомобиля? Всего два – начать движение и остановиться. Напишем этот код на java в файле с именем Car.java:

Car.java
        public class Car {
   int speed;
   int maxSpeed;
  
   void start(){}
   void stop(){}
}

    

Здесь мы описали шаблон будущего объекта – класс. У него есть две переменные состояния – speed и maxSpeed, а также две функции, которые описывают поведение объекта.

Теперь приложение нужно запустить, для этого Java надо подсказать, где находится точка входа в него. Для этого существует особое соглашение – нужно добавить в описание любого объекта метод:

        public static void main(String[] args) {
  
}

    

Именно, тот код, который мы в нем укажем и начнет выполняться.

Выполним теперь в консоли следующие команды:

        javac Car.java
java Car
    

Либо, что в разы проще, просто нажимаем зеленую стрелочку около метода и редакторе:

☕ Основы Java за 30 минут: самоучитель для начинающих

Наше приложение запустилось, но ничего не произошло, потому что мы не добавили никакой логики в метод. Добавим простой вывод на консоль текста:

        public static void main(String[] args) {
   System.out.println("Hello");
}

    

Результат выполнения виден на консоли.

Отмечу, что каждый файл может содержать только один публичный класс. То есть ключевое слово public вместе со словом class.

Ключевое слово public – это так называемый модификатор доступа. Оно определяет уровень доступности этого класса/метода/переменной из других частей программы.

Имя файла должно совпадать с именем класса, включая регистр, и иметь расширение .java. Ключевое слово static, говорит компилятору о том, что данный метод/переменная принадлежит именно шаблону объекта, то есть классу, а не конкретному объекту.

Пока не будем особо на это заострять внимание.

Пакеты в java

Стоит отметить, что часто в программах классы называют одинаково, поэтому была предложена идея их раскладывать по папкам, чтобы не было конфликта имен. Папка, в которой находится класс указывается в самом верху файла:

☕ Основы Java за 30 минут: самоучитель для начинающих

Создатели предложили называть эти папки как доменные имена в интернете, чтобы точно разграничить их, но это не обязательно, вы можете называть их как захотите.

Это так же позволяет легко импортировать чужие классы в свой код:

Import.java
        package ru.proglib;

import java.util.Random;  // импортируем описание класса из пакета java.util.
public class Import {
   public static void main(String[] args) {
       var random = new Random();
       System.out.println(random.nextInt());  // выводим на экран случайное число
   }
 }

    

В нашем пакете нет определения класса Random, поэтому я воспользовался ключевым словом import, чтобы его добавить в нашу программу. Теперь я могу с ним работать. Используя ключевое слово new я создаю на основе класса объект random, который могу использовать в дальнейшем коде. Далее у объекта я вызываю метод, nextInt который описывает следующее поведение объекта: объект возвращает из метода натуральное число, которое произвольно каким-то образом у себя генерирует. Мы не знаем как именно это происходит – мы знаем только то, что в результате вызова этого метода мы получим какое-то целое число типа int. В объектно ориентированном программировании этот прием называется инкапсуляцией – когда объект внутри себя, основываясь на своем состоянии генерирует некий результат, при этом пользователь данного метода не знает как это работает под капотом.

Продолжим далее разбираться с кодом, который был представлен выше. Начнем с самого простого. Если мы хотим добавить какое-то пояснение к коду, мы можем вставить в любую строчку два косых слеша и весь текст после них будет отброшен при компиляции программы, но при просмотре исходного кода он виден.

Создание объектов

В коде у нас была следующая строка:

        Random random = new Random();
    

Что она делает?

Здесь мы с помощью ключевого слова new создаем новый объект из его шаблона. Мы указываем, что в своем коде мы будем использовать имя random для обращения к этому объекту. В последней строке мы вызываем метод nextInt который приводит к тому, что в нашу программу возвращается какое-то число, после чего это же число мы передаем в метод println который уже выводит его на экран.

Попробуем для создать класс нашего автомобиля и задать ему поведение:

Car.java
        public class Car {
   int speed;
   int maxSpeed;

   void start() {
       System.out.println("Я начал ехать");
   }

   void stop() {
       System.out.println("Я остановился");
   }

   public static void main(String[] args) {
       var myCar = new Car();
       myCar.start();
       myCar.stop();
   }
}

    

Запустите код и посмотрите, что будет выведено на консоль.

Теперь вернемся к нашим переменным состояния объекта.

Примитивные типы в java

Компьютеры работают в основном с числами, поэтому были придуманы несколько ключевых слов, которые обозначают разные типы данных, по другому их называют примитивные типы данных:

Ключевое слово Тип Пример
boolean true или false (8-bit число) true
byte 8-bit число 123
short 16-bit число 123
int 32-bit число 123
long 64-bit число 123L
float 32-bit число 123.0f
double 64-bit число 123.0
char 16-bit число ‘a’

Так как компьютеры развивались постепенно, то на разных этапах своей жизни они могли хранить число, которое не выше разряда процессора, на котором они работают.

Поэтому появилась такая битовая таблица различных чисел. В нашем случае мы будем использовать числа типа int, которые могут быть описаны 32 битами в памяти компьютера. То есть наши числа будут лежать в промежутке -2,147,483,648 (-2^31) to 2,147,483,647 (2^31-1).

Конструкторы объектов

Теперь мы хотим, чтобы наше поведение зависело и от внутреннего состояния объекта. Для этого его надо как-то задать. Посмотрим как это можно сделать.

Car.java
        public class Car {
   int speed;
   int maxSpeed;

   public Car(int speed, int maxSpeed) {
       this.speed = speed;
       this.maxSpeed = maxSpeed;
       System.out.println("Объект готов");

   }

   void start() {
       System.out.println("Я начал ехать");
       System.out.println(speed);
   }

   void stop() {
       System.out.println("Я остановился");
       System.out.println(maxSpeed);
   }

   public static void main(String[] args) {
       var myCar = new Car(100, 500);
       myCar.start();
       myCar.stop();
   }
}

    

Мы добавили в наш код специальный код – конструктор. Он позволяет инициализировать объект перед тем как начать им пользоваться. При этом при создании объекта в методе main я добавил два натуральных числа, которые соответственно инициализировали состояние объекта. В конструкторе мы можем указать любую логику, которую необходимо выполнить при создании объекта.

Если вы запустите приложение, то увидите, что кроме строк на экран выводятся и числа – как раз те, которые мы передали в конструкторе. Теперь наш объект инициализирован – у него есть какое-то внутреннее состояние.

Ссылки vs примитивные типы

Теперь рассмотрим ключевое различие между ссылками на объект, которые мы использовали для работой с объектами и примитивными типами. Для ссылок мы можем написать так:

        var myCar = new Car(100, 500);
myCar = null;
    

Мы приравняли наш указатель на объект к ключевому слову null, которое говорит виртуальной машине, что по данному указателю уже нельзя обращаться к объекту, то есть вызов myCar.start(); приведет к ошибке. Что произойдет с нашим объектом, который мы создали? В виртуальной машине java запускается сборщик мусора, который обнаружит, что данный объект живет без какой либо ссылки и удалит его из памяти – то есть сотрет его в оперативной памяти.

Но подобное не работает с примитивными типами:

        int x = null;
    

Подобный код вызовет ошибку.

Также стоит отметить, что строки также являются классами, но при этом для них в языке сделаны существенные изменения.

Строки описываются классом String. Посмотрим какие исключения для них есть:

        var str = "Я остановился";
var srt2 =  new String("Я остановился");

    

Это единственный класс, который мы можем создать без оператора new.

Кроме того, строки можно складывать друг с другом или другими примитивными типами, но не вычитать, делить и т.п.:

        System.out.println("Я начал ехать" + "в направлении М1");
System.out.println("Я начал ехать" + "в направлении М1 со скоростью " + speed);

    

Добавьте данные строчки в наш код и вы увидите, что все прекрасно работает. Но повторюсь, что подобное исключение сделано только для одного класса – String, потом что строки очень часто используются.

Операторы в java

Раз мы упомянули операторы, давайте посмотрим какие предлагает java.

Унарный оператор – это оператор, для работы которого требуется только один операнд, или переменная, часто выполняют простые операции.

Оператор Описание Пример
! Инвертирует логическое значение булевой функции !true будет равно false
+ либо — Указывает на знак числа -123
++ Добавляет к числу единицу var i = 5; i++; //i будет равно 6
Отнимает от числа единицу var i = 5; i—; //i будет равно 4

Далее мы перейдем к операторам, принимающим два аргумента, которые называются бинарными операторами. Бинарные операторы являются самыми распространенными операторами в языке Java. Ранее мы уже познакомились с оператором сложения для строк.

Они могут использоваться для выполнения математических операций над переменными, создания логических выражений и выполнения базовых присваиваний переменных.

Оператор Описание Пример
+ Cложение var i = 5; var k = 6; System.out.println(i + k)
Вычитание var i = 5; var k = 6; System.out.println(i – k)
* Умножение var i = 5; var k = 6; System.out.println(i * k)
/ Деление var i = 5; var k = 6; System.out.println(i / k)
% Взятие по модулю var i = 15; var k = 6; System.out.println(i % k)

Если мы пишем сложное математическое выражение, то лучше пользоваться скобками:

var x = 5 * (6 – 8);

Завершить секцию с операторами я хотел бы таблицей с условными операторами, результат работы которых true либо false:

Оператор Описание Пример
== Сравнение на равенство var i = 5; var k = 6; System.out.println(i == k)
< либо <= Меньше, меньше либо равно var i = 5; var k = 6; System.out.println(i < k)
> либо >= Больше, больше либо равно var i = 5; var k = 6; System.out.println(i >= k)
&& Логическое и. В обоих частях должно быть true, чтобы оператор вернул true System.out.println(true && true)
|| Логическое и. Хотя бы в одной части должно быть true, чтобы оператор вернул true System.out.println(false || true)

Мы познакомились с самыми популярными операторами в java, настало время их использовать.

Мы хотим, чтобы наш автомобиль мог менять свое поведение, а именно изменять текущую скорость, которую мы задали при его создании.

Добавим новый метод, который будет это делать:

        void setSpeed(int speed){
   this.speed = speed;
}

    

Но мы не хотим, чтобы кто-то, кто пользуется нашим классом мог устанавливать скорость выше максимальной.

Условные выражения

Для того, чтобы наложить какие-либо ограничения на переменную, нам необходимо провести проверку, для этого нам понадобиться использовать условное выражение if:

        void setSpeed(int speed) {
   if (speed < maxSpeed) {
       this.speed = speed;
   }
}

    

В круглых скобках мы помещаем условие, которое должно вернуть либо true либо false, а в фигурных мы добавляем тот код, который будет выполнен если условие правдиво.

Так же, если условие вернуло false мы можем добавить с помощью ключевого слова else еще один блок кода, который выполняем в таком случае:

        void setSpeed(int speed) {
   if (speed < maxSpeed) {
       this.speed = speed;
   }
   else {
       System.out.println("Вы передали слишком большую скорость");
   }
}

    

Циклы

Что делать, если мы хотим повторять какой-то блок кода много раз? Если вместо if написать while у нас получится самый простой цикл, который будет выполняться до тех пор пока выражение в круглых скобках истинно или не произойдет прерывания цикла с помощью ключевого слова break, либо пока программа не завершиться, например из другого потока. Выглядеть это будет так:

        public static void main(String[] args) {
   var myCar = new Car(100, 500);
   var i = 0;
   while (i < 10){
       myCar.start();
       i++;
   }
}

    

В данном случае, мы создаем некую примитивную переменную i изначально равную 0. В цикле у нас есть условие того, что она меньше 10, если это не так, то код в фигурных скобках выполняться не будет. В них же мы увеличиваем значение i на единицу, если бы мы этого не делали, то выполнялся бы цикл вечно. Запустите программу и посмотрите, что будет выведено на экран и сколько раз.

Для того, чтобы отделить те логику работы цикла от нашего кода был создан цикл for.

Найдите различия:

        for (var i = 0; i < 10; i++) {
   myCar.start();
}

    

В круглых скобках у нас создается счетчик, передается условие цикла и рецепт, что делать со счетчиком на каждой итерации. Согласитесь, так код выглядит более компактно и логика управления циклом не перемешивается с нашей логикой.

если не передать никаких условий, то получится бесконечный цикл:

        for( ; ; ) {
   System.out.println("Hello World");
}

    

Выйти из него никак нельзя, только прервав работу приложения с помощью средств операционной системы. Мы можем прервать его работу с помощью ключевого слова break:

        for( ; ; ) {
   System.out.println("Hello World");
   break;
}

    

Сообщение будет выведено на консоль и на этом месте цикл остановится.

Массивы и коллекции

В своем проекте мы создали только один автомобиль, давайте теперь создадим несколько и поместим их в какое-то хранилище.

        var myCar = new Car(100, 500);
var myCar2 = new Car(10, 50);
var garage = new Car[2];

garage[0] = myCar;
garage[1] = myCar2;

for (Car car : garage) {
   car.start();
}

    

В примере выше мы создали два автомобиля, потом создали массив из указателей на объекты класса Car размером 2 и положили в него указатели на наши объекты. Как видно, отсчет ячеек массива начинается с 0. После чего мы использовали специальную модификацию цикла for для массивов и коллекций, который позволяет пройтись по всем элементам и совершить с ними какую-то логику.

То есть теперь у нас есть объект, который может хранить в себе несколько указателей на другие объекты, но работать с массивами не удобно. Нужно знать заранее точный размер и в какие ячейки, что нужно записывать. Поэтому сейчас самый востребованный метод хранения данных – коллекции.

Перепишем наш код с помощью коллекций:

        var myCar = new Car(100, 500);
var myCar2 = new Car(10, 50);
var garage = new ArrayList<Car>();

garage.add(myCar);
garage.add(myCar2);

for (Car car : garage) {
   car.start();
}

    

Как вы можете видеть, код не сильно изменился, но пропали эти неуклюжие записи указателей в конкретные ячейки. Теперь все сохраняется автоматически.

Для объявления коллекции мы написали так:

        var garage = new ArrayList<Car>();
    

Что это значит? Здесь мы говорим, что будем использовать коллекцию на основе массива и что в нашей коллекции будут лежать объекты типа Car.

Самое важное, что мы не задали размер нашей коллекции. Так как она позволяет добавлять в себя любое число элементов, которые могут поместиться в оперативной памяти вашего компьютера.

Коллекция типа HashSet (множество) не позволит положить в себя два одинаковых значения, сравните выводы:

        var garage = new HashSet<Car>();

garage.add(myCar);
garage.add(myCar);
garage.add(myCar2);

for (Car car : garage) {
   car.start();
}

    

А потом замените первую строку

        var garage = new ArrayList<Car>();

    

Кроме списка так же популярна коллекция Map, она позволяет присваивать объектам ключи и потом получать эти объекты по уникальному ключу:

        var myCar = new Car(100, 500);
var myCar2 = new Car(10, 50);
var garage = new HashMap<String, Car>();

garage.put("Мой авто", myCar);
garage.put("Мой второй авто", myCar2);

garage.get("Мой второй авто").start();

    

Я указал строку в качестве ключа – очень частая практика. И положил в коллекцию два своих объекта. Потом я по ключу достал свой объект и вызвал его метод.

Могу сказать, что коллекции – это то, чем вы будете пользоваться всегда в своей работе, поэтому их надо знать. Здесь я рассказал лишь о трех из них, которые используются в 99% случаев, при том не рассказав какие дополнительные методы они несут в себе.

Исключения

Чтобы произошло, если бы я написал свой запрос так:

        garage.get("второй авто").start();
    

То на консоли увидел бы следующее:

        Exception in thread "main" java.lang.NullPointerException
	at ru.proglib.Car.main(Car.java:42)

    

Возникла исключительная ситуация и программа прервала свою работу. Так как метод get вернул null о котором мы говорили ранее. Соответственно у нас не было объекта на котором мы могли бы вызвать метод. Для предотвращения таких ситуаций был придумал блок try/catch. Посмотрим как он помог бы решить нашу проблему:

        try {
   garage.get("второй авто").start();
}catch (NullPointerException exception){
   System.out.println("В словаре нет автомобиля с таким ключем");
}

    

После try я в фигурных скобках пишу код, в качестве которого не уверен. В блоке круглых скобок catch я указываю какого типа ошибки могут возникнуть. Ошибки также являются в java объектами. Соответственно в фигурных скобках я указываю ту логику, которая будет выполнена при возникновении исключительной ситуации.

Вывод

Наше беглое знакомство с Java заканчивается. В этом материале мы рассмотрели лишь малую часть возможностей языка и его конструкций. Но я надеюсь, вы поняли, что на нем можно писать довольно лаконично и емко, при том программы, которые вы будете создавать будут отличаться надежностью и мультиплатформенностью из коробки. Java сейчас один из самых востребованных языков в мире разработки и если вы выберете его в качестве своего основного, то вы однозначно выиграете от этого решения. Ниже я привел лучше ресурсы, откуда можно черпать свои знания. Удачного обучения!

Дополнительные материалы:

  • Очень рекомендую ознакомится с заметкой ТОП-10 лучших книг по Java для программистов ( https://proglib.io/p/java-books-2019). В ней вы найдете поборку из прекрасных книг по java.
  • Если необходимо узнать какую-то информацию о бзовых возможностях java, то лучше официально документации ничего нет – https://docs.oracle.com/en/java/javase/16/
  • А если вам нужно усваивать материал через видео, то нет ничего лучше, чем лекции, которые читает Java Champion.

***

Мне всё еще непонятно, с чего начинать путь в IT. Что посоветуете?

Стоит подумать, как построить свой путь в индустрию, чтобы получить качественные знания и устроиться на работу.

Онлайн-университет Skypro помогает новичкам в IT комфортно сменить сферу деятельности. Курс «Java-разработчик» построен так, чтобы дать полноценный взгляд на IT и базовые знания для работы младшим специалистом. Вы научитесь:

  • писать код на языках Java и SQL;
  • управлять схемами баз данных;
  • собирать проекты на Maven и Spring;
  • работать с кешем и потоками.

На протяжении всего обучения студентов поддерживают наставники и обучают топовые специалисты рынка. Если вы не устроитесь на работу в течение четырех месяцев после окончания обучения, Skypro вернет деньги — это прописано в договоре.


Download Article


Download Article

Java is an object-oriented programming language created in 1995 by James Gosling, which means that it represents concepts as «objects» with «fields» (which are attributes that describe the object) and «methods» (actions that the object can make). Java is a «write once, run anywhere» language, which means that it is designed to run on any platform that has a Java Virtual Machine (JVM). Since Java is a very verbose programming language, it is easy for beginners to learn and understand. This tutorial is an introduction to writing programs in Java.

  1. Image titled 91968 1

    1

    In order to start writing programs in Java, set up your work environment. Many programmers use Integrated Development Environments (IDEs) such as Eclipse and Netbeans for their Java programming, but one can write a Java program and compile it without bloated IDEs.

  2. Image titled 91968 2

    2

    Any sort of Notepad-like program will suffice for programming in Java. Hardcore programmers sometimes prefer to use text editors that are within the terminal such as vim and emacs. A very good text editor that can be installed on both a Windows machine and on a linux-based machine (Mac, Ubuntu, etc.) is Sublime Text, which is what we will be using in this tutorial.

    Advertisement

  3. Image titled 91968 3

    3

  4. Advertisement

  1. Image titled 91968 4

    1

    We will first create a program that prints «Hello World.» In your text editor, create a new file and save it as «HelloWorld.java». HelloWorld is your class name and you will need your class name to be the same name as your file.

  2. Image titled 91968 5

    2

    Declare your class and your main method. The main method public static void main(String[] args) is the method that will be executed when the programming is running. This main method will have the same method declaration in every Java program.

    public class HelloWorld {
        public static void main(String[] args) {
        }
    }
    
  3. Image titled 91968 6

    3

    Write the line of code that will print out «Hello World.»

    System.out.println("Hello World.");
    
    • Let’s look at the components of this line:
      • System tells the system to do something.
      • out tells the system that we are going to do some output stuff.
      • println stands for «print line,» so we are telling the system to print a line in the output.
      • The parentheses around ("Hello World.") means that the method System.out.println() takes in a parameter, which, in this case, is the String "Hello World."
    • Note that there are some rules in Java that we have to adhere to:
      • You must always add a semicolon at the end of every line.
      • Java is case sensitive, so you must write method names, variable names, and class names in the correct case or you will get an error.
      • Blocks of code specific to a certain method or loop are encased between curly brackets.
  4. Image titled 91968 7

    4

    Put it all together. Your final Hello World program should look like the following:

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello World.");
        }
    }
    
  5. Image titled 91968 8

    5

    Save your file and open up command prompt or terminal to compile the program. Navigate to the folder where you saved HelloWorld.java and type in javac HelloWorld.java. This tells the Java compiler that you want to compile HelloWorld.java. If there are errors, the compiler will tell you what you did wrong. Otherwise, you shouldn’t see any messages from the compiler. If you look at the directory where you have HelloWorld.java now, you should see HelloWorld.class. This the the file that Java will use to run your program.

  6. Image titled 91968 9

    6

    Run the program. Finally, we get to run our program! In command prompt or terminal, type in java HelloWorld. This tells Java that you want to run the class HelloWorld. You should see «Hello World.» show up in your console.

  7. Image titled 91968 10

    7

    Congratulations, you have made your first Java program!

  8. Advertisement

  1. Image titled 91968 11

    1

    We will now extend our Hello World program to take input from the user. In our Hello World program, we printed out a string for the user to see, but the interactive part of programs is when the user gets to enter input into the program. We will now extend our program to prompt the user for his or her name and then greet the user by his or her name.

  2. Image titled 91968 12

    2

    Import the Scanner class. In Java, we have some built in libraries that we have access to, but we have to import them. One of these libraries is java.util, which contains the Scanner object that we need to get user input. In order to import the Scanner class, we add the following line to the beginning of our code.

    import java.util.Scanner;
    
    • This tells our program that we want to use the Scanner object which exists in the package java.util.
    • If we wanted to have access to every object in the java.util package, we simply write import java.util.*; at the beginning of our code.
  3. Image titled 91968 13

    3

    Inside our main method, instantiate a new instance of the Scanner object. Java is an object-oriented programming language, so it represents concepts using objects. The Scanner object is an example of an object that has fields and methods. In order to use the Scanner class, we have to create a new Scanner object that we can populate the fields of and use the methods of. To do this, we write:

    Scanner userInputScanner = new Scanner(System.in);
    
    • userInputScanner is the name of the Scanner object that we just instantiated. Note that the name is written in camel case; this is the convention for naming variables in Java.
    • We use the new operator to create a new instance of an object. So, in this instance, we created a new instance of the Scanner object by writing new Scanner(System.in).
    • The Scanner object takes in a parameter that tells the object what to scan. In this case, we put in System.in as a parameter. System.in tells the program to scan the input from the system, which is the input that the user will type into the program.
  4. Image titled 91968 14

    4

    Prompt the user for an input. We have to prompt the user for an input so that the user knows when to type something into the console. This can be accomplished with a System.out.print or a System.out.println.

    System.out.print("What's your name? ");
    
  5. Image titled 91968 15

    5

    Ask the Scanner object to take in the next line that the user types in and store that in a variable. The Scanner will always be taking in data on what the user is typing in. The following line will ask the Scanner to take what the user has typed in for his or her name and store it in a variable:

    String userInputName = userInputScanner.nextLine();
    
    • In Java, the convention for using an object’s method is objectName.methodName(parameters). In userInputScanner.nextLine(), we are calling our Scanner object by the name we just gave it and then we are calling its method nextLine() which does not take in any parameters.
    • Note that we are storing the next line in another object: the String object. We have named our String object userInputName
  6. Image titled 91968 16

    6

    Print out a greeting to the user. Now that we have the user’s name stored, we can print out a greeting to the user. Remember the System.out.println("Hello World."); that we wrote in the main class? All of the code that we just wrote should go above that line. Now we can modify that line to say:

    System.out.println("Hello " + userInputName + "!");
    
    • The way we chained up «Hello «, the user’s name, and «!» by writing "Hello " + userInputName + "!" is called String concatenation.
    • What’s happening here is that we have three strings: «Hello «, userInputName, and «!». Strings in Java are immutable, which means that they cannot be changed. So when we are concatenating these three strings, we are essentially created a new string that contains the greeting.
    • Then we take this new string and feed it as a parameter to System.out.println.
  7. Image titled 91968 17

    7

    Put it all together and save. Our code should now look like this:

    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner userInputScanner = new Scanner(System.in);
            System.out.print("What's your name? ");
            String userInputName = userInputScanner.nextLine();
            System.out.println("Hello " + userInputName + "!");
        }
    }
    
  8. Image titled 91968 18

    8

    Compile and run. Go into command prompt or terminal and run the same commands as we ran for our first iteration of HelloWorld.java. We have to first compile the program: javac HelloWorld.java. Then we can run it: java HelloWorld.

  9. Advertisement

Sample Java Programs

Add New Question

  • Question

    How do I write a program to accept a number and then check if it is prime or not prime?

    Community Answer

    Try: import java.io.*;
    class prime
    {
    public static void main(String args[]) throws IOException
    {
    int n,i,r,f=0;
    DataInputStream in=new DataInputStream(Sytem.in);
    in=Integer.parseInt(in.readLine());
    for(i=2;i

  • Question

    What is the difference between public and private?

    Community Answer

    Public involves classes, sub-classes, and packages. Private involves only classes and sub-classes.

  • Question

    How can I compile and run a saved Java program?

    Community Answer

    An easy way is to click on the right side of the mouse and a window will pop up, then click run java application.

See more answers

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

  • Java is an object-oriented programming language, so it’s useful to read more on the foundations of object-oriented programming languages.

  • Object Oriented Programming has many features specific to its paradigm. Three of these main features are:

    • Encapsulation: the ability to restrict access to some of the object’s components. Java has private, protected, and public modifiers for fields and methods.
    • Polymorphism: the ability for objects to take on different identities. In Java, an object can be cast into another object to use the other object’s methods.
    • Inheritance: the ability to use fields and methods from another class in the same hierarchy as the current object.

Thanks for submitting a tip for review!

Advertisement

About This Article

Thanks to all authors for creating a page that has been read 1,063,551 times.

Is this article up to date?


Download Article


Download Article

Java is an object-oriented programming language created in 1995 by James Gosling, which means that it represents concepts as «objects» with «fields» (which are attributes that describe the object) and «methods» (actions that the object can make). Java is a «write once, run anywhere» language, which means that it is designed to run on any platform that has a Java Virtual Machine (JVM). Since Java is a very verbose programming language, it is easy for beginners to learn and understand. This tutorial is an introduction to writing programs in Java.

  1. Image titled 91968 1

    1

    In order to start writing programs in Java, set up your work environment. Many programmers use Integrated Development Environments (IDEs) such as Eclipse and Netbeans for their Java programming, but one can write a Java program and compile it without bloated IDEs.

  2. Image titled 91968 2

    2

    Any sort of Notepad-like program will suffice for programming in Java. Hardcore programmers sometimes prefer to use text editors that are within the terminal such as vim and emacs. A very good text editor that can be installed on both a Windows machine and on a linux-based machine (Mac, Ubuntu, etc.) is Sublime Text, which is what we will be using in this tutorial.

    Advertisement

  3. Image titled 91968 3

    3

  4. Advertisement

  1. Image titled 91968 4

    1

    We will first create a program that prints «Hello World.» In your text editor, create a new file and save it as «HelloWorld.java». HelloWorld is your class name and you will need your class name to be the same name as your file.

  2. Image titled 91968 5

    2

    Declare your class and your main method. The main method public static void main(String[] args) is the method that will be executed when the programming is running. This main method will have the same method declaration in every Java program.

    public class HelloWorld {
        public static void main(String[] args) {
        }
    }
    
  3. Image titled 91968 6

    3

    Write the line of code that will print out «Hello World.»

    System.out.println("Hello World.");
    
    • Let’s look at the components of this line:
      • System tells the system to do something.
      • out tells the system that we are going to do some output stuff.
      • println stands for «print line,» so we are telling the system to print a line in the output.
      • The parentheses around ("Hello World.") means that the method System.out.println() takes in a parameter, which, in this case, is the String "Hello World."
    • Note that there are some rules in Java that we have to adhere to:
      • You must always add a semicolon at the end of every line.
      • Java is case sensitive, so you must write method names, variable names, and class names in the correct case or you will get an error.
      • Blocks of code specific to a certain method or loop are encased between curly brackets.
  4. Image titled 91968 7

    4

    Put it all together. Your final Hello World program should look like the following:

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello World.");
        }
    }
    
  5. Image titled 91968 8

    5

    Save your file and open up command prompt or terminal to compile the program. Navigate to the folder where you saved HelloWorld.java and type in javac HelloWorld.java. This tells the Java compiler that you want to compile HelloWorld.java. If there are errors, the compiler will tell you what you did wrong. Otherwise, you shouldn’t see any messages from the compiler. If you look at the directory where you have HelloWorld.java now, you should see HelloWorld.class. This the the file that Java will use to run your program.

  6. Image titled 91968 9

    6

    Run the program. Finally, we get to run our program! In command prompt or terminal, type in java HelloWorld. This tells Java that you want to run the class HelloWorld. You should see «Hello World.» show up in your console.

  7. Image titled 91968 10

    7

    Congratulations, you have made your first Java program!

  8. Advertisement

  1. Image titled 91968 11

    1

    We will now extend our Hello World program to take input from the user. In our Hello World program, we printed out a string for the user to see, but the interactive part of programs is when the user gets to enter input into the program. We will now extend our program to prompt the user for his or her name and then greet the user by his or her name.

  2. Image titled 91968 12

    2

    Import the Scanner class. In Java, we have some built in libraries that we have access to, but we have to import them. One of these libraries is java.util, which contains the Scanner object that we need to get user input. In order to import the Scanner class, we add the following line to the beginning of our code.

    import java.util.Scanner;
    
    • This tells our program that we want to use the Scanner object which exists in the package java.util.
    • If we wanted to have access to every object in the java.util package, we simply write import java.util.*; at the beginning of our code.
  3. Image titled 91968 13

    3

    Inside our main method, instantiate a new instance of the Scanner object. Java is an object-oriented programming language, so it represents concepts using objects. The Scanner object is an example of an object that has fields and methods. In order to use the Scanner class, we have to create a new Scanner object that we can populate the fields of and use the methods of. To do this, we write:

    Scanner userInputScanner = new Scanner(System.in);
    
    • userInputScanner is the name of the Scanner object that we just instantiated. Note that the name is written in camel case; this is the convention for naming variables in Java.
    • We use the new operator to create a new instance of an object. So, in this instance, we created a new instance of the Scanner object by writing new Scanner(System.in).
    • The Scanner object takes in a parameter that tells the object what to scan. In this case, we put in System.in as a parameter. System.in tells the program to scan the input from the system, which is the input that the user will type into the program.
  4. Image titled 91968 14

    4

    Prompt the user for an input. We have to prompt the user for an input so that the user knows when to type something into the console. This can be accomplished with a System.out.print or a System.out.println.

    System.out.print("What's your name? ");
    
  5. Image titled 91968 15

    5

    Ask the Scanner object to take in the next line that the user types in and store that in a variable. The Scanner will always be taking in data on what the user is typing in. The following line will ask the Scanner to take what the user has typed in for his or her name and store it in a variable:

    String userInputName = userInputScanner.nextLine();
    
    • In Java, the convention for using an object’s method is objectName.methodName(parameters). In userInputScanner.nextLine(), we are calling our Scanner object by the name we just gave it and then we are calling its method nextLine() which does not take in any parameters.
    • Note that we are storing the next line in another object: the String object. We have named our String object userInputName
  6. Image titled 91968 16

    6

    Print out a greeting to the user. Now that we have the user’s name stored, we can print out a greeting to the user. Remember the System.out.println("Hello World."); that we wrote in the main class? All of the code that we just wrote should go above that line. Now we can modify that line to say:

    System.out.println("Hello " + userInputName + "!");
    
    • The way we chained up «Hello «, the user’s name, and «!» by writing "Hello " + userInputName + "!" is called String concatenation.
    • What’s happening here is that we have three strings: «Hello «, userInputName, and «!». Strings in Java are immutable, which means that they cannot be changed. So when we are concatenating these three strings, we are essentially created a new string that contains the greeting.
    • Then we take this new string and feed it as a parameter to System.out.println.
  7. Image titled 91968 17

    7

    Put it all together and save. Our code should now look like this:

    import java.util.Scanner;
    
    public class HelloWorld {
        public static void main(String[] args) {
            Scanner userInputScanner = new Scanner(System.in);
            System.out.print("What's your name? ");
            String userInputName = userInputScanner.nextLine();
            System.out.println("Hello " + userInputName + "!");
        }
    }
    
  8. Image titled 91968 18

    8

    Compile and run. Go into command prompt or terminal and run the same commands as we ran for our first iteration of HelloWorld.java. We have to first compile the program: javac HelloWorld.java. Then we can run it: java HelloWorld.

  9. Advertisement

Sample Java Programs

Add New Question

  • Question

    How do I write a program to accept a number and then check if it is prime or not prime?

    Community Answer

    Try: import java.io.*;
    class prime
    {
    public static void main(String args[]) throws IOException
    {
    int n,i,r,f=0;
    DataInputStream in=new DataInputStream(Sytem.in);
    in=Integer.parseInt(in.readLine());
    for(i=2;i

  • Question

    What is the difference between public and private?

    Community Answer

    Public involves classes, sub-classes, and packages. Private involves only classes and sub-classes.

  • Question

    How can I compile and run a saved Java program?

    Community Answer

    An easy way is to click on the right side of the mouse and a window will pop up, then click run java application.

See more answers

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

  • Java is an object-oriented programming language, so it’s useful to read more on the foundations of object-oriented programming languages.

  • Object Oriented Programming has many features specific to its paradigm. Three of these main features are:

    • Encapsulation: the ability to restrict access to some of the object’s components. Java has private, protected, and public modifiers for fields and methods.
    • Polymorphism: the ability for objects to take on different identities. In Java, an object can be cast into another object to use the other object’s methods.
    • Inheritance: the ability to use fields and methods from another class in the same hierarchy as the current object.

Thanks for submitting a tip for review!

Advertisement

About This Article

Thanks to all authors for creating a page that has been read 1,063,551 times.

Is this article up to date?

Этой статьей мы начинаем цикл публикаций для абсолютных новичков в Java. В последующих материалах будут рассмотрены, ко всему прочему, такие темы, как работа с Git, GitHub, командной строкой и многое другое — мы разберем весь набор инструментов и тем, необходимый начинающему Java-джентльмену.

Чтобы написать свою первую программу, требуется не так много усилий. При этом даже можно не устанавливать никакие приложения: ни среду разработки, ни текстовый редактор, ни даже Java — ничего!

Чтобы познакомиться с языком, достаточно открыть любой онлайн-редактор кода, поддерживающий Java. Пишем в гугле java compiler online и выбираем понравившийся. Я остановлюсь на этом: он простой, выглядит хорошо и обладает всеми необходимыми на данном этапе возможностями.

В последующих статьях мы будем использовать для написания кода текстовый редактор Sublime Text, а затем окончательно перейдем на профессиональную среду разработки Intellij IDEA.

Откройте онлайн-редактор и удалите все, что там написано. Затем наберите в нем в точности, включая все пробелы и отступы, следующие строки кода:


public class MyFirstApp {	
    public static void main(String[] args) {
        System.out.println("Write once, run anywhere");
    }
}

Переименуйте имя файла в MyFirstApp.java.

Для запуска программы нажмите Run.

Если все сделано верно, то в консоли отобразится текст: Write once, run anywhere. Переводится, как «Написано однажды, работает везде» — это девиз Java.

Если в коде есть какие-то проблемы, то выведется ошибка. Для ее устранения нужно еще раз внимательно сверить свой код с предложенным выше.

А теперь попробуем разобраться с самой программой.

Чтобы во всех подробностях объяснить каждую строчку даже этой маленькой программки, нам пришлось бы предварительно изучить множество тем, о которых мы еще ничего не знаем. Поэтому рассмотрим код на том уровне, которого будет сейчас достаточно для общего понимания его работы.

Удалим лишний код программы, чтобы он не отвлекал. Будем добавлять его по мере необходимости.


public class MyFirstApp {	

}

В первой строке мы сообщаем, что здесь начинается программа или, если говорить в терминах Java, объявляется класс.

Чтобы было проще понять, что такое класс, его можно воспринимать как способ организации или оформления кода в файле. К нему также подойдет аналогия с контейнером для кода. Все программы в Java записываются внутри подобных классов. Выглядит это немного замысловато, но вы привыкнете.

В строке 1 и 3 используются фигурные скобки, открывающаяся { и закрывающаяся }, идущие всегда парой. Они являются ограничителями, показывающими, где начинается и заканчивается класс. Все, что находится внутри этих скобок, называется телом класса.

В некоторых языках программирования { ставится на новой строке, а не на той, где объявляется класс или другие конструкции языка.


public class MyFirstApp
{	
    public static void main(String[] args)
    {
        System.out.println("Write once, run anywhere");
    }
}

Никогда так не пишите, даже если увидите такой стиль в суперпопулярных книжках от именитых программистов. Дело в том, что все эти люди когда-то давно писали на языке С и С++ и переняли из них привычку ставить скобки в их стиле. Так исторически сложилось, а переучиваться они не видят смысла. Но вам нужно писать правильно, как принято в современном Java-мире!

Рассмотрим строку с объявлением класса чуть подробнее. Она состоит из ряда слов, идущих последовательно в определенном порядке.

public — модификатор доступа, делающий данный класс публичным, общедоступным — мы его ни от кого не прячем.

Да, в Java одни классы можно прятать от других классов, библиотек и т. д. Зачем это делать, сейчас сложно объяснить, т. к. еще не хватает знаний. Но в качестве примера можно привести ситуацию, когда Гарри Поттер надел на себя мантию-невидимку и не хотел, чтобы Северус Снегг видел его, а значит, заговорил с ним, попросил что-то, отправил куда-то и т. д. Также и мы можем не хотеть, чтобы один класс мог видеть и использовать другой класс.

class — ключевое слово, сообщающее о том, что данная конструкция описывает класс, а не что-то другое.

Имя класса (с большой буквы) — позволяет отличать один класс от другого. Программа может состоять из сотен и тысяч классов, а хорошо продуманные имена позволяют в них хоть как-то ориентироваться.

Наверное, вы обратили внимание на способ написания имени класса MyFirstApp, когда все слова начинаются с большой буквы. Это делает их похожими на верблюжьи горбы. Поэтому данный способ называется CamelCase. Существуют и другие, но в Java используется именно этот.

public и class являются зарезервированными (ключевыми) словами Java. Таких слов много. Со временем вы будете знать их все.

Также стоит помнить, что имя файла должно в точности повторять, включая первую большую букву, имя класса, описанного в нем. В нашем случае и класс и файл имеют имя MyFirstApp. Это очень удобно, потому что не нужно открывать файл, чтобы узнать, какой класс в нем описан. Достаточно посмотреть на имя файла.

Программа будет работать даже, если имя файла написать с маленькой буквы. Но все разработчики Java следуют соглашению, что имя файла должно начинаться с большой буквы. Привыкайте к таким правилам и тоже следуйте им.

Имя файла еще имеет и расширение .java, которое необходимо указывать для всех java-файлов, чтобы отличать один тип файла от другого.

Подведем промежуточный итог, выделив ряд правил, которые мы прошли (их нужно запомнить):

  • для объявления класса необходимо использовать запись вида public class ИмяКласса
  • для обозначения начала и конца объявления класса используются фигурные скобки { }, которые всегда идут парой
  • имя класса принято начинать с большой буквы
  • при именовании класса необходимо использовать CamelCase
  • имя файла и класса должны совпадать
  • файл с Java-кодом должен иметь расширение .java

Границы программы заданы, класс объявлен. Далее реализуем в нем какую-то функциональность. Для этого нужно объявить (создать) метод.


public class MyFirstApp {	
    public static void main(String[] args) {

    }
}

В других языках эта конструкция может называться процедурой или функцией. В Java — называется методом. Это блок кода, который выполняет какую-то полезную работу. Это функциональная возможность класса, т. е. то, что он умеет делать.

Метод, как и класс, записывается по определенным правилам и тоже содержит ряд ключевых слов и фигурные скобки, обозначающие его границы.

Метод main — непростой метод: он отвечает за запуск программы, и его внешний вид строго декларирован (утвержден).

Разберем, из чего состоит объявление метода main.

public — так же, как и для класса сообщает о том, что метод является публичным, общедоступным (да, методы тоже можно прятать или оставлять открытыми). В данном случае мы его не скрываем от JVM (Java Virtual Machine — виртуальная машина Java, в которой запускаются и работают Java-программы), чтобы она могла выполнить его независимо от того, где находится класс с этим методом или сама JVM.

static — сейчас понять назначение этого слова будет тяжело, т. к. чтобы про него рассказать, требуется разобрать дополнительные темы, которые мы еще не проходили. На данном этапе достаточно знать, что модификатор static позволяет JVM запускать метод main без дополнительных действий с ее стороны.

В качестве аналогии можно привести кота, у которого есть кормушка с кнопкой. Чтобы начать использовать кормушку, коту не нужно ее строить. Он жмет кнопку и получает корм. В нашем случае виртуальная машина просто запускает метод main, не создавая экземпляр класса, в котором он находится (примите эту информацию как есть. В последующих статьях мы подробнее раскроем эту тему).

void — указывает на тип возвращаемого значения. Каждый метод внутри себя выполняет какую-то деятельность. Результатом этой работы может быть какое-то значение. Например, результатом работы метода, который складывает два числа 2 + 2 является новое число 4. Это значение он может передать дальше в программу, либо оно навсегда останется в нем.

Снова обратимся к коту за аналогией. Он подходит к электронной кормушке, нажимает кнопку и получает порцию корма. В данном случае результатом работы кормушки является корм, который он передает коту. А тот его уже дальше использует по своему назначению.

Во второй ситуации кот подходит к холодильнику. Результатом его работы является сохраненный холодом от порчи корм. Кот на этот раз ничего не получает. Корм остается в холодильнике.

В нашем случае слово void означает, что метод не возвращает никакого значения, т. е. результатом его работы не является что-то, что мы могли бы использовать за пределами метода main. В этом случае мы похожи на кота, которому холодильник ничего не дал.

main — имя метода. Позволяет отличать один метод от другого, т. к. класс может содержать огромное их количество. В нашем случае метод называется main, т. е. «главный», «основной». Имена методов в Java принято записывать с маленькой буквы.

Имена методов могут состоять из нескольких слов, например, findCat, deleteAllNumbers, receiveKeyIfResumeExist и т. д. В этом случае тоже используют camelCase, но первое слово в имени начинается с маленькой буквы.

() — открывающаяся и закрывающаяся круглая скобка. Они выполняют две функции: сообщают, что перед нами метод; а также могут внутри себя содержать описание принимаемых аргументов.

String[] args — принимаемые методом аргументы. В данном случае метод main принимает в качестве аргумента массив строк, который называется args. Чтобы представить, что такое массив, подумайте о коробке конфет или о лотке для яиц. Это все массивы, где хранятся элементы одного типа: либо только конфеты, либо только яйца. С массивами мы детально разберемся в другой статье.

Тут можно привести пример со стиральной машиной, которую перед запуском можно настроить на нужный режим стирки. Нажимая все ее кнопки, вы передаете в нее аргументы с определенными значениями: время стирки, нужен ли отжим, тип материала и т. д.

{ } — открывающаяся и закрывающаяся фигурная скобка. Задают границы метода. Все, что находится внутри них, называется телом метода.

Как я написал выше, main — это не простой метод. Это — самый главный метод. Его еще называют точкой входа в программу. При запуске программы, в первую очередь, запускается именно он. Внешний вид метода строго декларирован и прописан в спецификации языка. В противном случае JVM не сможет найти его, и программа не запустится

Спецификация языка — это технический pdf-документ с описанием синтаксиса и семантики языка.

На данном этапе вам нужно просто запомнить, как выглядит метод main. Представьте, что это магическое заклинание, которое звучит как public static void main(String[] args) — повторяйте его, чтобы запомнить.

Снова подведем промежуточный итог, выделив ряд правил, которые мы прошли:

  • для объявления метода main необходимо использовать запись вида public static void main(String[] args)
  • для обозначения начала и конца метода используются фигурные скобки { }, которые всегда идут парой
  • имя метода принято начинать с маленькой буквы
  • при именовании метода, если он состоит из более чем одного слова, тоже используют camelCase, но первое слово в имени начинается с маленькой буквы

4. Вывод текста на консоль

Нам осталось разобраться с последней строкой кода, которая позволяет вывести на экран текст Write once, run anywhere.


public class MyFirstApp {	
    public static void main(String[] args) {
        System.out.println("Write once, run anywhere");
    }
}

Это еще одно заклинание на языке Java, которое условно можно разбить на следующие части:

  • System.out.println — отвечает за вывод текста. Просто запомните, как это пишется
  • ( ) — парные круглые скобки
  • «Write once, run anywhere» — текст, обрамленный с двух сторон кавычками, который будет отображен при запуске программы
  • точка с запятой — сообщает о том, что строка с кодом закончилась

1) Ранее было написано, что имя класса и имя файла должны совпадать. Давайте попробуем нарушить это правило и посмотрим на последствия.

Изменим имя файла MyFirstApp.java на MyApp.java, и запустим программу. Отобразится ошибка:

Она означает, что в строке 1 файла MyApp.java объявляется публичный класс с именем MyFirstApp, а значит и находиться он должен в файле с таким же именем.

2) Теперь нарушим еще одно правило, написав имя класса и файла с маленькой буквы, назвав их myFirstApp. Запустив программу, видим, что отобразилось сообщение Write once, run anywhere.

Можно сделать вывод, что писать имя файла и класса с большой буквы является лишь договоренностью всех программистов друг с другом. Это сделано для того, чтобы в коде не путать имена переменных (начинаются с маленькой буквы. О них мы поговорим в другой статье) с именами классов.

3) Попробуем изменить имя метода main, например, на Main. Запустив программу, увидим следующую ошибку:

JVM не смогла запустить программу т. к. не нашла метод main (с маленькой буквы). О чем и свидетельствует ошибка Error: main method not found.

4) Вернем методу его первоначальное имя, но удалим слова public static и снова запустим. Возникнет та же самая ошибка, что и в предыдущем пункте, связанная с тем, что при запуске программы не был найден метод main, записанный по всем правилам.

Самостоятельно попробуйте удалять разные части программы и смотреть, какие при этом будут возникать ошибки.

Оцените статью, если она вам понравилась!

Понравилась статья? Поделить с друзьями:
  • Как пишут мцко
  • Как пишут мусульмане справа налево или слева направо
  • Как пишут музыку продюсеры
  • Как пишут музыку на компьютере
  • Как пишут музыку к играм