Передача в метод ссылочных типов и типов значений
Last updated: 4 мая 2025 г.Рассмотрим передачу ссылочного типа в метод и передачу типа значения в метод.
Для начала передадим в метод тип значения.
1public class LinkValInMethodExample {
2 // Определим метод, в который передается числовой параметр,
3 // к которому будет прибавляться единица.
4 static void doStuff(int y) {
5 y = y + 1;
6 }
7
8 public static void main(String[] args) {
9 // Сначала передадим в метод тип значения
10 int x = 5;
11 doStuff(x); // Когда мы передаем тип значения в метод doStuff,
12 // мы передаем не саму переменную x, а ее КОПИЮ.
13 System.out.println(x); // Поэтому x все еще равно 5, а не 6,
14 // так как в методе doStuff происходили действия не с самой x,
15 // а с ее копией.
16 }
17}
Вывод:

Теперь передадим в метод объект ссылочного типа и изменим его в этом методе.
1//Создадим простейший класс для демонстрации
2//передачи в метод ссылки на объект.
3class Animal {
4 public String eats;
5 public int noOfLegs;
6}
7
8public class LinkValInMethodExample {
9 //Определим метод, в который передаётся объект
10 //и в нем он меняется. (Точнее передаётся ссылка на объект).
11 static void doStuff(Animal Y) {
12 Y.eats = "grass";
13 Y.noOfLegs = 4;
14 }
15
16 public static void main(String[] args) {
17 //Теперь же когда мы передаем ссылочный тип
18 //мы передаем в метод ссылку на объект, который
19 //мы создали строчкой кода ниже и через эту ссылку
20 //метод работает с этим созданным объектом
21 Animal x = new Animal();
22 x.eats = "meat";
23 x.noOfLegs = 2;
24
25 doStuff(x); // Передаем копию ссылки (правильно говорить:
26 // мы передаем копию ссылки, то есть мы передаем не саму ссылку x,
27 // а ее копию. То есть когда мы в метод передаем x, то создается
28 // новая ссылка, которая ссылается на тот же объект, что и x,
29 // и через нее уже работает метод с данным объектом.
30 // На созданный объект, который содержит
31 // два поля со значениями "meat" и 2,
32 // метод doStuff использует её и может изменять объект
33 // прямо в методе.
34
35 System.out.println(x.eats);
36 System.out.println(x.noOfLegs);
37 // Как можно увидеть в консоли: x.eats = "grass", а x.noOfLegs = 4,
38 // так как в методе происходила
39 // работа с объектом через копию ссылки x.
40 }
41}
Вывод:

Следующие уроки
Аннотации в Java
12
мин.
Обработка исключений
10
мин.
Generics в Java
9
мин.