Загрузка...

Методы в Java

Напишите метод с именем ring, который печатает одно слово: ding. Эти строки печати положите под static void ring() с пустыми круглыми скобками. Внутри main напишите только ring(); — имя, затем пустые скобки, затем точку с запятой. Скомпилируйте и запустите. На экране должна появиться одна строка: ding. Сам main не держит println для ding. Его держит метод. Именно это разделение страница и учит.

Строки, которые живут под ring

До сих пор большая часть печати сидела прямо внутри main. Так по-прежнему можно. Метод даёт тем же строкам собственное имя. Вы пишете строки один раз под этим именем. Затем main просит их, записывая имя как вызов.
Создайте небольшой файл программы с именем Chime.java. public class в первой строке должен совпадать с именем файла: public class Chime. Не оставляйте в этом файле старое имя класса Pack или Skip; компилятор ждёт, что имя класса и имя файла совпадут.
Вне main, но всё ещё внутри фигурных скобок класса, напишите:
static void ring() {
System.out.println("ding");
}
Слово static остаётся на этой начальной форме, чтобы main мог вызвать ring без создания объекта. Слово void значит, что метод не возвращает значение вызывающему — он только выполняет своё тело. Имя ring — это метка, которую вы наберёте в main. Пустые круглые скобки () значат, что метод этой страницы не принимает значений. Фигурные скобки держат тело. System.out.println("ding"); пишет четыре буквы d-i-n-g. Сохраните файл перед компиляцией.

Chime.java, который вы компилируете

Вот полная маленькая программа этой страницы. main держит только вызов. ring держит печать.

ring печатает ding

java
public class Chime {
    public static void main(String[] args) {
        ring();
    }

    static void ring() {
        System.out.println("ding");
    }
}

Из папки, где лежит Chime.java, выполните javac Chime.java. Когда круглые скобки, фигурные скобки и точки с запятой совпадают, javac не пишет ни одной своей строки. Затем выполните java Chime — не java Chime.java. Окончание .java у второй команды уберите. Те же две команды работают и в Windows, и в macOS; эта страница не требует другого написания оболочки ни для одной из систем. Программа должна напечатать одну строку и остановиться: ding. Она не ждёт, пока вы что‑то наберёте. Если терминал ждёт ввода с клавиатуры, в файле ещё остался вызов nextLine из старого упражнения. Удалите этот вызов и оставьте ring(); в main вместе с методом ring выше. Из‑за неверной строки на экране новый JDK ставить не нужно.

Пройдите один запуск по порядку. Java начинает с main. Единственный оператор в main — ring();. Этот вызов переходит в метод ring. Внутри ring println пишет ding. Затем ring заканчивается, в main больше ничего нет, и программа завершается. На этой странице вы не ставили System.out.println("ding"); внутрь main. Вы положили его под ring и вызвали по имени. Если экран показывает ding, вызов дошёл до тела. Если после чистой компиляции экран остаётся пустым, main так и не вызвал ring, либо в main по-прежнему только пустые фигурные скобки без вызова.

Вызовите ring из main больше одного раза

Измените только main так, чтобы он вызывал тот же метод дважды:
public static void main(String[] args) {
ring();
ring();
}
Сам метод ring не трогайте. Скомпилируйте и запустите снова: javac Chime.java, затем java Chime. На экране должны появиться две строки, каждая со словом ding. Первый вызов выполняет тело один раз. Второй вызов выполняет то же тело снова. Именно ради такого повторного использования строкам и дают имя. Вы не копировали println второй раз под ring. Вы написали второй вызов в main.
Если убрать второй ring(); и оставить только один вызов, экран снова покажет один ding. Определение метода само по себе ничего не печатает. Только вызов из main (или позже из другого метода) запускает тело. Файл, который определяет ring, но никогда не вызывает его из main, может скомпилироваться и всё равно показать пустой экран при java Chime, потому что main нечем заняться.

Части заголовка метода

На этой странице заголовок — static void ring(). Читайте слева направо. static позволяет main вызвать метод на этой начальной форме. void значит, что через вызов значение не возвращается. ring — имя. () намеренно пустые: эта сессия не передаёт в метод слова или числа. Следующая страница, parameters, ставит имена внутрь этих скобок. Страница после неё, return, меняет void, когда нужно значение обратно. Оба темы оставьте на потом. Сегодня пустых () и void достаточно.

📊 Часть заголовка на этой странице

Часть На этой странице
static main может вызвать ring без объекта
void ring не возвращает значение
ring имя, которое вы пишете в вызове
() на этой странице значения внутрь не идут
{ ... } тело, которое печатает ding

Вызов в main должен совпадать с именем точно: ring(); с маленькой r, пустыми скобками и точкой с запятой. Написание Ring(); с большой R для Java — другое имя. Написание ring без () на этой форме не является вызовом. Написание System.out.println("ring"); печатает четыре буквы слова ring; тело метода при этом не выполняется. Держите вызов как ring();, когда на экране нужен ding.

Частый остаток — старое демо Pack с for-each, которое ещё сидит в main рядом с новым вызовом. Тогда экран может показать 2, 4 и 6, или red и blue, вместо ding — либо оба вида строк вперемешку. Очистите main до тех ring();, которые нужны этому уроку. Другая путаница — положить метод внутрь фигурных скобок main. Методы этой страницы сидят внутри класса, рядом с main, а не вложенными внутрь main. javac не считает метод, спрятанный внутри main, тем ring, который вы вызываете. Закройте скобки ring до конца main, и скобки main до конца класса, чтобы каждый блок держал только свои строки.

Готовы к следующим страницам

Вы умеете писать static void ring(), класть строки println в его фигурные скобки и вызывать ring() из main, чтобы экран показал ding. Два вызова печатают ding дважды без копирования тела. Пустые скобки и void намеренно остаются на этой странице. parameters положит значения внутрь скобок. return позволит методу вернуть число или текст в main. Это следующие две страницы после этой.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
7
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

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