Топ-100Передача в метод ссылочных типов и типов значений - CodOrbits
LogoCodOrbits

Раздел: ООП

Здесь вы познакомитесь с объектно-ориентированным программированием в Java: классы, наследование, инкапсуляция и полиморфизм и многое другое.

Все разделы
Иконка ООП

Передача в метод ссылочных типов и типов значений

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
мин.

Similar Articles Icon
Divider

Обработка исключений

10
мин.

Similar Articles Icon
Divider

Generics в Java

9
мин.

Similar Articles Icon