Прошу разъяснения о работе метода [закрыт]

101
26 ноября 2020, 01:40
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Разбираю код учебной программы и не понимаю синтаксиса Java.

public class Solution {
    public static void main(String[] args) {
        hackSalary(700);
    }
    public static void hackSalary(int a) {
        // напишите тут ваш код
        System.out.print ("Твоя зарплата составляет: ");
        System.out.print (a + 100);
        System.out.print (" долларов в месяц.");
    }
}

Понимаю что значение 700 принимает значение а в методе hackSalary. Но что такое hackSalary(700)? На объявление переменной это не похоже. Перелистал все руководство для начинающих по Java Шилдта, ничего не могу понять.
Дайте пожалуйста разъяснение или ссылку на материал, где разбирается подобный синтаксис.

Answer 1

Вот этот код - объявление метода (инструкции, что делать методу когда его вызовут):

public static void hackSalary(int a) {
    // напишите тут ваш код
    System.out.print ("Твоя зарплата составляет: ");
    System.out.print (a + 100);
    System.out.print (" долларов в месяц.");
}

вот этот код - вызов метода с параметром:

hackSalary(700)

То есть, первый кусок (объявление) описывает, что должно происходить при вызове. Второй (вызов), собственно вызывает этот кусок с конкретным значением, выполняет код. Если вызываемый метод находится в этом же классе, то имя класса указывать не нужно, достаточно просто обратиться к нему по имени метода.

Выражение hackSalary(700) - значит вызвать метод hackSalary с параметром 700 - значением переменной a для этого конкретного вызова. Вы можете подставить туда другое число, например 346, и получить другой результат расчета. То есть, вызывая данный метод с разными числами - он будет рассчитывать новые значения зарплаты по формуле.

Answer 2

hackSalary(700); - это вызов метода и передача ему аргумента(в данном случае - число). В Java можно создать метод, который будет принимать значения, и что-то с ними делать. Пример:

 public static void hackSalary(int a) {
     // напишите тут ваш код
     System.out.print ("Твоя зарплата составляет: ");
     System.out.print (a + 100);
     System.out.print (" долларов в месяц.");
 }

Этот метод принимает в качестве параметра какое-нибудь числовое значение - (int a). Потом в этом методе проходят какие-нибудь действия с этим значением. В той строке кода вы вызывали метод hackSalary, передавали ему значение (700), которое присваивалось переменной (int a).

Answer 3

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

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

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

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

Я думаю что лучше всего это описано в Java Tutorial.

READ ALSO
RxJava + Retrofit + Observable цикл запросов

RxJava + Retrofit + Observable цикл запросов

Имеется база из которой с помощью запросов достаются данные в формате jsonПервый запрос возвращает массив объектов, в котором есть поле с внешним...

107
ajax.data form.serialize + myaction

ajax.data form.serialize + myaction

Может вопрос глупый, но прошу помочьне могу найти решение

96
Повторные запросы axios

Повторные запросы axios

axios (post, timeout: 1500) запрос из vue-приложения пытается получить данные с серверасервер не доступен (отключил специально)

89
Обертки для DOM и обработчики событий [дубликат]

Обертки для DOM и обработчики событий [дубликат]

Изучаю чистый JS, хочу добавить методы и свойства для моих DOM элементовВ интернетах сказали, что напрямую записывать методы и свойства в DOM-элементы...

95