Как передаются аргументы в метод java
Перейти к содержимому

Как передаются аргументы в метод java

  • автор:

Как передаются аргументы в метод java

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

static void sum(int x, int y)

Данная функция принимает два параметра — два числа, складывает их и выводит их сумму на консоль.

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

public class Program < public static void main (String args[])< int a = 6; int b = 8; sum(a, b); // 14 sum(3, a); // 9 sum(5, 23); // 28 >static void sum(int x, int y) < int z = x + y; System.out.println(z); >>

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

Рассмотрим другой пример:

public class Program < public static void main (String args[])< display("Tom", 34); display("Bob", 28); display("Sam", 23); >static void display(String name, int age) < System.out.println(name); System.out.println(age); >>

Метод display принимает два параметра. Первый параметр представляет тип String, а второй — тип int. Поэтому при вызове метода вначале в него надо передать строку, а затем число.

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

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

public class Program < public static void main (String args[])< sum(1, 2, 3); // 6 sum(1, 2, 3, 4, 5); // 15 sum(); // 0 >static void sum(int . nums) < int result =0; for(int n: nums) result += n; System.out.println(result); >>

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

public static void main(String[] args) < sum("Welcome!", 20,10); sum("Hello World!"); >static void sum(String message, int . nums)

Параметры в Java передаются по ссылке или по значению?

Этот вопрос уходит корнями в C++ прошлое (скорее всего интервьюера), это терминология из C++. Для начала нужно разобраться в этой терминологии.

В C++ ссылка – это переменная-псевдоним для другой переменной. Меняя значение ссылки, поменяется и оригинал. В Java такого нет, легко понять это подумав например о ссылке на int.

Ссылка в Java – это нечто похожее на адрес объекта в памяти. Похожая сущность в C++ называется указатель.

Передача параметра по значению – это копирование значения в переменную-параметр метода. По ссылке – передача ссылки, то есть по сути использование той же самой переменной. Разобраться подробнее (осторожно, много C++).

В Java параметр метода – всегда копия. Значит параметры передаются всегда по значению, просто это значение может быть ссылкой на объект. Код ниже это демонстрирует.

Как передать аргументы в main java

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

Передаваемые аргументы можно получить в методе main через строковый массив args :

public class App  public static void main(String[] args)  for(int i = 0; i  args.length; i++)  System.out.println("Аргумент №" + (i+1) + "- " + args[i]); > > > 

Запустим приложение в командной строке, справа через пробел указав передаваемые аргументы :

>java App.java Вася Петя Аргумент №1 - Вася Аргумент №2 - Петя > 

Java. Методы. Передача параметров в методах (функциях) класса. Передача переменных простых типов и объектов в метод в качестве параметра

Методы. Передача параметров в методах (функциях) класса. Передача переменных примитивных типов и объектов в метод в качестве параметра

Поиск на других ресурсах:

1. Какие существуют способы передачи аргументов методу (функции)?

В Java существует 2 способа для передачи переменной или объекта класса в функцию:

  • передача по значению. В этом случае значение аргумента копируется в формальный параметр функции. Поскольку создается копия аргумента в функции, то все изменения над копией не повлияют на значение аргумента;
  • передача по ссылке (по адресу). В этом случае параметру передается ссылка на аргумент, который используется при вызове. По этой ссылке есть доступ к аргументу. Таким образом, все изменения, сделанные в теле функции над значением параметра, будут изменять значение аргумента который был передан в функцию.
2. Какие особенности передачи аргумента примитивного типа ?

Если методу передается аргумент примитивного типа, то происходит передача по значению. То есть, делается копия аргумента.

3. Каким образом в метод передается объект некоторого класса?

В отличие от переменных примитивных типов, объекты класса передаются по ссылке. Это значит, что изменения, сделанные в теле функции (методе) будут изменять также значения объекта, который задавался в качестве аргумента.

4. Примеры передачи переменных примитивных типов в методы (функции)

Пример 1. Реализация метода Max() , получающего два параметра примитивного типа.

static int Max(int a, int b) < if (a>b) return a;  else return b; >

Демонстрация использования метода в другом методе:

public static void main(String[] args) <  int t, x, y; x = 133; y = 68; t = Max(x, y); // t = 133 System.out.println("Max color: #0000ff;">Inc(), увеличивающего (уменьшающего) значение целочисленной величины value на значение входного аргумента step. В теле метода изменяется значение параметра value. Однако, после завершения метода значение аргумента x в функции main() остается без изменений. Это значит, что состоялась передача параметра по значению.

Реализация метода имеет следующий вид:

static int Inc(int value, int step) < value += step; return value; >

Демонстрация использования метода Inc() в методе main() :

  • внутренняя переменная month;
  • три конструктора;
  • три метода доступа.

будет существовать ссылка на память, выделенную динамично внутри метода Method() . Таким образом, для переменной-объекта varObj не нужно выделять память в вызывающем коде.

Пример. Пусть задан класс MyDay , реализующий день недели.

Связанные темы

  • Типы данных Java
  • Применение классов в программах на Java. Определение класса и объекта класса. Примеры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *