Загрузка...

Параметры в Java

Напишите метод с именем greet, который принимает одно слово. Внутри круглых скобок напишите String name. В теле напечатайте hi, пробел и затем name: System.out.println("hi " + name);. Из main вызовите greet("lena");. На экране должна появиться одна строка: hi lena. Буквы lena внутри метода не зашиты. Они приходят через вызов и на этот проход садятся в имя name. Именно эту передачу и учит страница.

Имя внутри круглых скобок

На странице methods круглые скобки после ring оставались пустыми. Печать всегда была ding. Здесь скобки держат типизированное имя, чтобы каждый вызов мог послать другое значение. Это типизированное имя — параметр. Значение, которое вы пишете в вызове, — аргумент для этого прохода.
Создайте небольшой файл программы с именем Tip.java. public class в первой строке должен совпадать с именем файла: public class Tip. Не оставляйте в этом файле старое имя класса Chime или Pack; компилятор ждёт, что имя класса и имя файла совпадут.
Вне main, но всё ещё внутри фигурных скобок класса, напишите:
static void greet(String name) {
System.out.println("hi " + name);
}
Заголовок на этой начальной форме по-прежнему начинается с static void. Между скобками сначала String, затем name — сначала тип, потом имя параметра. Тело использует name без кавычек вокруг него, склеивая с фиксированным текстом "hi " через плюс. Кавычки вокруг "hi " помечают фиксированные буквы. Голое name помечает значение, пришедшее из вызова. Сохраните файл перед компиляцией.

Tip.java с greet

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

greet принимает String

java
public class Tip {
    public static void main(String[] args) {
        greet("lena");
    }

    static void greet(String name) {
        System.out.println("hi " + name);
    }
}

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

Пройдите один полный запуск по порядку. Java начинает с main. Вызов greet("lena"); отправляет текст lena в параметр name. Внутри greet println собирает hi, пробел и затем это значение, поэтому экран показывает hi lena. Затем greet заканчивается, и main завершается. Вы не писали System.out.println("hi lena"); внутри main. Фиксированную часть вы написали один раз под greet и передали lena из вызова.

Тот же метод, разные слова

Измените только main так, чтобы он вызывал greet дважды с двумя разными аргументами:
public static void main(String[] args) {
greet("lena");
greet("sam");
}
Сам метод greet не трогайте. Скомпилируйте и запустите снова: javac Tip.java, затем java Tip. На экране должны появиться две строки: hi lena, затем hi sam. Первый вызов заполняет name значением lena. Второй вызов заполняет name значением sam. Вы не копировали println под greet. Вы изменили только значения внутри вызовов.
Если вызвать greet() с пустыми скобками, пока заголовок всё ещё говорит String name, javac пишет ошибку — вызов должен дать String. Если оставить старый ring(); с пустыми скобками со страницы Chime в том же main, этот вызов не совпадает с greet, а оставшийся метод ring может по-прежнему печатать ding рядом с вашими строками hi. Очистите main до тех вызовов greet, которые нужны этому уроку.

Целое число как значение

Параметры нужны не только для текста. Напишите второй метод, который принимает int:
static void show(int n) {
System.out.println(n);
}
Вызовите его из main с целыми числами:
show(9);
show(4);

show принимает int

java
public class Tip {
    public static void main(String[] args) {
        show(9);
        show(4);
    }

    static void show(int n) {
        System.out.println(n);
    }
}

Скомпилируйте и запустите: javac Tip.java, затем java Tip. На экране должны появиться две строки: 9, затем 4. Кавычки вокруг 9 или 4 в вызове не ставятся — это значения int, а не текст. Внутри show println(n) пишет число, которое пришло. Когда вы увидели эти две строки, можете вернуть демо greet. Обе версии — корректный Java. Они учат одной идее: вызов посылает значение, параметр держит его для тела.
Прочитайте int-запуск ещё раз. Первый вызов ставит n в 9 и печатает 9. Второй вызов ставит n в 4 и печатает 4. Имя n объявлено один раз в заголовке как int n. Каждый вызов даёт ему новое значение на этот проход. Передача слова в кавычках в show, например show("nine");, не совпадает с int на этой форме — javac пишет ошибку. Передача голого числа в greet, например greet(3);, не совпадает с String — javac снова пишет ошибку. Сопоставляйте тип аргумента с типом параметра.

Частая путаница — напечатать само имя параметра как текст: System.out.println("name");. Это пишет буквы n-a-m-e. Это не пишет lena. Держите println("hi " + name) без кавычек вокруг name, когда на экране нужны буквы аргумента. Другая путаница — объявить параметр в main вместо заголовка метода. Типизированное имя принадлежит внутрь greet(...) или show(...), а не внутрь скобок main на этой странице. String[] args у main — другая тема для более поздней сессии; не переименовывайте args в name и не ждите, что greet его увидит.

Куда вас приводит эта страница

Вы умеете класть String name или int n внутрь скобок метода, передавать совпадающее значение в вызове и печатать это значение из тела. Два вызова с двумя аргументами печатают две разные строки без копирования метода. void по-прежнему значит, что через вызов ничего не возвращается. Следующая страница — return; там метод отдаёт значение обратно в main вместо того, чтобы только печатать внутри тела.

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

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

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

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

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

📝 Инструкции

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