Перейти к контенту

Передача и возврат объектов в методы Java

Как мы знаем, это основная концепция, что в Java всегда передается по значению, а не по ссылке. Так что в этом посте мы сосредоточимся на том, как эта концепция проверяется в случае передачи примитива и передачи ссылки в метод.

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

 

Хотя в случае передачи ссылки на метод снова Java следует тому же правилу передачи по значению, теперь давайте разберемся, как это происходит.

Поскольку мы знаем, что ссылка в Java содержит место в памяти объекта, созданного, если оно назначено этой ссылке, в противном случае оно инициируется как null. Теперь следует помнить, что значение ссылки — это место в памяти назначенного объекта. поэтому всякий раз, когда мы передаем ссылку на любой метод в качестве аргумента, мы фактически передаем ячейку памяти этого объекта, которая назначена этой конкретной ссылке.

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

Разберем пример передачи и возврата объектов в Java —

Пример

public class PassByValue {
   static int k  =10;
   static void passPrimitive(int j) {
      System.out.println("the value of passed primitive is " + j);
      j = j + 1;
   }
   static void  passReference(EmployeeTest emp) {
      EmployeeTest reference = emp;
      System.out.println("the value of name property of our object is "+ emp.getName());
      reference.setName("Bond");
   }
   public static void main(String[] args) {
      EmployeeTest ref = new EmployeeTest();
      ref.setName("James");
      passPrimitive(k);
      System.out.println("Value of primitive after get passed to method is "+ k);
      passReference(ref);
      System.out.println("Value of property of object after reference get passed to method is "+ ref.getName());
   }
}
class EmployeeTest {
   String name;
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

Итог

the value of passed primitive is 10
Value of primitive after get passed to method is 10
the value of name property of our object is James
Value of property of object after reference get passed to method is Bond

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

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

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)