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

Рассмотрим передачу ссылочного типа в метод и передачу типа значения в метод.

Для начала передадим в метод тип значения.

public class LinkValInMethodExample { // Определим метод, в который передается числовой параметр, // к которому будет прибавляться единица. static void doStuff(int y) { y = y + 1; } public static void main(String[] args) { // Сначала передадим в метод тип значения int x = 5; doStuff(x); // Когда мы передаем тип значения в метод doStuff, // мы передаем не саму переменную x, а ее КОПИЮ. System.out.println(x); // Поэтому x все еще равно 5, а не 6, // так как в методе doStuff происходили действия не с самой x, // а с ее копией. } }

Вывод:

Теперь передадим в метод объект ссылочного типа и изменим его в этом методе.

//Создадим простейший класс для демонстрации //передачи в метод ссылки на объект. class Animal { public String eats; public int noOfLegs; } public class LinkValInMethodExample { //Определим метод, в который передаётся объект //и в нем он меняется. (Точнее передаётся ссылка на объект). static void doStuff(Animal Y) { Y.eats = “grass”; Y.noOfLegs = 4; } public static void main(String[] args) { //Теперь же когда мы передаем ссылочный тип //мы передаем в метод ссылку на объект, который //мы создали строчкой кода ниже и через эту ссылку //метод работает с этим созданным объектом Animal x = new Animal(); x.eats = “meat”; x.noOfLegs = 2; doStuff(x); // Передаем копию ссылки (правильно говорить: // мы передаем копию ссылки, то есть мы передаем не саму ссылку x, // а ее копию. То есть когда мы в метод передаем x, то создается // новая ссылка, которая ссылается на тот же объект, что и x, // и через нее уже работает метод с данным объектом. // На созданный объект, который содержит // два поля со значениями “meat” и 2, // метод doStuff использует её и может изменять объект // прямо в методе. System.out.println(x.eats); System.out.println(x.noOfLegs); // Как можно увидеть в консоли: x.eats = “grass”, а x.noOfLegs = 4, // так как в методе происходила // работа с объектом через копию ссылки x. } }

Вывод:

Аннотации в Java

Узнайте, что такое аннотации в Java на примерах @Override, @Deprecated и @FunctionalInterface. Создавайте собственные аннотации с @interface для управления кодом.
Time to read: 12

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

Освойте обработку исключений в Java: try-catch-finally, throw и throws. Узнайте, как предотвратить аварийное завершение программы при ошибках.
Time to read: 10

Generics в Java

Изучите Generics в Java: создавайте универсальные классы с параметризованными типами. Примеры использования Generics для гибкости кода и типобезопасности.
Time to read: 9