— Ты уже здесь, Амиго? Мне известно, что ты уже выучил очень много команд в Java. Почти до меня дотягиваешь!

— Правда что ли, Диего?

— Конечно нет, ха-ха. Тебе ещё учиться и учиться. Но всё-таки ты уже знаешь достаточно, чтобы писать довольно сложные программы. 10, 20, 30 строк кода в программе — не такая и большая программа, верно?

— Пожалуй, да. Особенно если выносить фигурные скобки на отдельные строки.

— А вот программа в 100+ строк — уже большая. Разбираться в её коде довольно сложно даже нам, роботам. Как думаешь, можно ли как-то упростить написание и чтение программ с большим количеством кода?

— Я искренне на это надеюсь!

— И не зря. Упростить программу можно, и помогут нам в этом так называемые методы. Их иногда называют функциями.

— Функция или метод... Ну и что это?

— Если очень сильно упростить, то метод — это группа команд, у которой есть уникальное имя. Другими словами, мы просто компонуем несколько команд в одну группу и даем ей уникальное имя. И всё — метод готов. Чаще всего команды компонуют в группу по какому-то принципу, для решения маленькой и конкретной задачи. Например “метод для печати строк из файла”. Или “метод для возведения числа в степень”.

— Получается, мы разбиваем программу на методы?

— Да, и это упрощает код.

Пример:

Без метода С методом
class Solution
{
   public static void main(String[] args)
   {
     System.out.print("Wi-");
     System.out.println("Fi");
     System.out.print("Wi-");
     System.out.println("Fi");

     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void main(String[] args)
   {
     printWiFi();
     printWiFi();
     printWiFi();
   }
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}

— В программе в левой колонке у нас три раза повторяется один и тот же код — мы так специально сделали для примера. А в программе справа мы вынесли повторяющийся код в отдельный метод и дали ему уникальное имя — printWiFi.

И вместо вынесенного кода 3 раза написали вызов метода printWiFi().

— Когда программа в колонке справа будет исполняться, каждый раз при выполнении команды printWiFi() она будет выполнять все команды внутри метода printWiFi(). Мы просто создали новую команду (метод), объединив в одну группу несколько команд.

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

— Отличная идея разбивать программу на методы.

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

— Готов внимать и пытаться писать методы! Только расскажи, как это делать.

Фрагмент лекции JavaRush - университета.

Объявление метода в Java

— Как нам все-таки объявить самый простой метод? А вот как:

public static void имя()
{
   код метода
}

Где имя — это уникальное имя метода, а код метода — это команды, из которых состоит метод. Значение слов public, static и void мы рассмотрим несколько позднее.

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

имя();

— Где имя — это уникальное имя метода, который мы хотим вызвать, и команды которого мы хотим выполнить в месте его вызова.

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

— А теперь, Амиго, посмотри новыми глазами на те команды, которые ты уже изучил. Например, System.out.println(). Ничего не приходит в голову, что это на самом деле?

— Неужели ты хочешь сказать, что эти все команды — это просто методы, написанные другими программистами?

— Не все, но многие из них. Да, именно так! Их написали другие, чтобы облегчить нам жизнь.

— И public static void main(String[] args) это же тоже метод… Теперь это имеет больше смысла!

— Естественно, имеет, это же программирование! Главный метод, альфа и омега программы… Получается, код метода может содержать вызовы других методов:

Код Примечание
class Solution
{
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}




Вызываем метод printWiFi10Times()


Объявляем метод printWiFi10Times


Вызываем метод printWiFi() 10 раз в цикле


Объявляем метод printWiFi

Выводим на экран текст Wi-Fi

Фрагмент лекции JavaRush - университета.

Факты о методах

— Я приберёг для тебя несколько полезных фактов о методах. Лови:

Факт 1. Метод — это всегда часть класса.

Метод можно объявить только в классе. Метод нельзя объявить внутри другого метода. Метод нельзя объявить вовне класса.

Факт 2. Имя метода не несет сакрального смысла

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

Факт 3. Порядок методов в классе не играет роли

Вы можете написать ваши методы в классе в любом порядке — это никак не повлияет на выполнение программы. Пример:

Код
class Solution
{
   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   
   public static void main(String[] args)
   {
     printWiFi10Times();
   }

   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }
}
class Solution
{
   public static void printWiFi()
   {
     System.out.print("Wi-");
     System.out.println("Fi");
   }

   public static void printWiFi10Times()
   {
     for (int i = 0; i < 10; i++)
       printWiFi();
   }
   public static void main(String[] args)
   {
     printWiFi10Times();
   }
}

Факт 4. Переменные внутри одного метода никак не связаны с переменными других методов

Что происходит в Вегасе, остается в Вегасе. А переменные, объявленные внутри метода, остаются внутри этого метода.

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

Имена методов

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

— Никогда бы не подумал, что это так уж сложно!

— Ты просто ещё мало разбирался в невнятном чужом коде, где переменные и методы названы как попало, попробуй разберись. На самом деле, уже существует чуть ли не целая наука о том, как правильно называть методы. И у каждого языка программирования есть свои стандарты.

— В Java принято руководствоваться такими принципами:

Принцип 1. Имя метода должно кратко описывать то, что этот метод делает.

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

Например, Thread.sleep() — «усыпить программу» и Scanner.nextInt() — «считать следующее целое число». Удобно, не так ли?

Принцип 2. Имя метода может состоять из нескольких слов.

Однако для этого случая есть несколько ограничений:

  • Пробелы в имени метода писать нельзя: все слова пишутся слитно.
  • Каждое слово пишется с большой буквы, кроме первого.
  • Имя метода всегда пишется с маленькой буквы

Вспомни метод printWiFi10Times. Что значит его имя? «написать 10 раз слово WiFi». Много слов в имени метода писать не нужно: имя должно отражать самую суть.

Такой стандарт написания имен называется CamelCase (Camel — верблюд. Большие буквы похожи на верблюжьи горбы).

Принцип 3. Имя метода начинается с глагола.

Метод всегда что-то делает, поэтому первое слово в названии метода — это всегда действие.

Плохие имена для метода: home, cat, car, train, ...;

Хорошие имена: run, execute, print, read, write, ...

Принцип 4. В имени метода используются только латинские буквы и цифры.

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

Но! Представь, как долго ты бы изучал Java, если бы названия метода System.out.println() было на китайском?

Гораздо дольше, чем сейчас, не так ли? Это, во-первых.

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

Поэтому рекомендуется в именах методов использовать только латинские буквы и цифры.

Важно:

Имя метода обязательно должно начинаться с буквы (с цифры — нельзя).

— Это все основные принципы именования методов в Java. Урок окончен, иди задачки решай!

— Уже бегу, Диего!

undefined
7
Задача
Java Syntax Pro, 7 уровень, 1 лекция
Недоступна
Разделяй понятия
Метод main выводит слишком много строк информации о различных понятиях. Было бы логично разделить вывод информации о водороде и об острове Ява на разные методы. Создай public static void printHydrogenInfo() метод, который должен выводить все строки о водороде. Также создай public static void printJa
undefined
7
Задача
Java Syntax Pro, 7 уровень, 1 лекция
Недоступна
Упорядоченная информация
Перед тобой — плохой пример использования методов: 1. Методы разделили двустишие; 2. Одну строку кода не стоит оборачивать в отдельный метод. Перепиши код так, чтобы весь текст выводился в методе main, а остальные методы удали. Вывод программы не должен измениться.