Параметры методов

Последнее обновление: 16.09.2025

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

class Program{

    public static void main(String[] args) {  

        Person tom = new Person();
        tom.say();  // Hello
        tom.say();  // Hello
    }
}

class Person{ 

    void say(){
        System.out.println("Hello");
    }
}

Здесь определен класс Person, в котором есть метод say(). Этот метод имитирует говорение некоторой фразы. В методе main создается один объект класса Person, и у него вызывается два раза метод say. И ожидаемо мы увидим на консоли два раза слово "Hello":

Hello
Hello

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

тип_метода имя_метода (тип_параметра1 параметр1, тип_параметра2 параметр2, ...)
{
    // действия метода
}

Определение параметра состоит из двух частей: сначала идет тип параметра и затем его имя.

Так, используем параметры и для этого изменим программу следующим образом:

class Program{

    public static void main(String[] args) {  

        Person tom = new Person();
        tom.say("Hello work");  // Hello work
        tom.say("Hello gold");  // Hello gold
    }
}

class Person{ 

    void say(String message){
        System.out.println(message);
    }
}

Здесь метод say() теперь принимает один параметр, который называется message и имеет тип String.

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

tom.say("Hello work");

Здесь параметру message передается строка "Hello work". Значения, которые передаются параметрам, еще называются аргументами. То есть передаваемая строка "Hello work" в данном случае является аргументом.

Иногда можно встретить такие определения как формальные параметры и фактические параметры. Формальные параметры - это собственно параметры метода (в данном случае message), а фактические параметры - значения, которые передаются формальным параметрам. То есть фактические параметры - это и есть аргументы метода.

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

class Program{

    public static void main(String[] args) {  

        Calcualtor calc = new Calcualtor();
        calc.sum(1, 2);   // 3
        calc.sum(5, 3);   // 8
        calc.sum(5, 6);   // 11
    }
}
class Calcualtor{

    void sum(int a, int b){

        int result = a + b;
		System.out.println(result);
    }
}

Здесь определен класс Calculator с одним методом sum, имеет два параметра - два числа и выводит на консоль их сумму. Поскольку оба параметра имеют тип int, то на место параметров надо передать два значения типа int. Это могут быть и числовые литералы, и переменные типов данных, которые представляют тип int или могут быть автоматически преобразованы в тип int.

Значения передаются параметрам по позиции, то есть первый аргумент первому параметру, второй аргумент - второму параметру и так далее. Например, при вызове calc.sum(5, 3) число 5 передается параметру a, а число 3 - параметру b.

Параметры переменной длины

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

class Program{

    public static void main(String[] args) {  

        Calcualtor calc = new Calcualtor();
        calc.sum(1, 2, 3);			// 6
		calc.sum(1, 2, 3, 4, 5);    // 15
		calc.sum();					// 0
    }
}
class Calcualtor{

    void sum(int ...nums){
		
		int result =0;
		for(int n: nums)
			result += n;
		System.out.println(result);
	}
}

Троеточие перед названием параметра int ...nums указывает на то, что он будет необязательным и будет представлять массив. Мы можем передать в метод sum одно число, несколько чисел, а можем вообще не передавать никаких параметров. Причем, если мы хотим передать несколько параметров, то необязательный параметр должен указываться в конце:

class Program{

    public static void main(String[] args) {  

        Calcualtor calc = new Calcualtor();
        calc.sum("Sum of {1, 2, 3}: ", 1, 2, 3);    // Sum of {1, 2, 3}: 6
		calc.sum("Zero sum: ");					    // Zero sum: 0
    }
}
class Calcualtor{

    void sum(String message, int ...nums){
		
        System.out.print(message); 
		int result =0;
		for(int n: nums)
			result += n;
		System.out.println(result);
	}
}
Помощь сайту
Юмани:
410011174743222
Номер карты:
4048415020898850
Morty Proxy This is a proxified and sanitized view of the page, visit original site.