Jak przekazywane są obiekty w Javie?

0

Jak przekazywane są obiekty w Javie? Jak powinno się odpowiedzieć na to pytanie? Czy odpowiedź przez wartość jest prawidłowa? Co powiedzieć więcej na ten temat.

1

Referencje są przekazywane przez wartość. Obiekty są przekazywane i obsługiwane zawsze przez referencje.

0

Odpowiedź przez wartość jest prawidłowa, należy mieć na uwadzę to, że przy przekazywaniu obiektu przez metode, jest tworzona kopia tego obiektu(więc przekazywanie przez wartość), lecz w niektórych przypadkach(np. kolekcje) istnieje możliwość modyfikacji tej kolekcji poprzez skopiowany obiekt.

0

Przekazywana jest wartość referencji a referencja to adres obiektu w pamięci
To podobne to tego jakbyś przekazywał pojedyńczy wskaźnik w C/C++

0
public class Main {
  public static void main(String[] args) {
    int val = 5;
    int[] arr = new int[]{5};

    passByValue(val);
    passByReference(arr);

    System.out.println(val);
    System.out.println(arr[0]);
    // 5
    // 10
  }

  public static void passByValue(int val) {
    val += 5;
  }

  public static void passByReference(int[] obj) {
    obj[0] += 5;
  }
}
0

Referencje są przekazywane przez wartość. Obiekty są przekazywane i obsługiwane zawsze przez referencje.

Czyli załóżmy że mamy dwie metody:

void func1(Foo foo)
{
   foo.setValue(6);
}

void func2(Foo foo)
{
   foo = new Foo();
   foo.setValue(6);
}

I wywołując je w ten sposób:

Foo foo = new Foo();
foo.setValue(5);
func1(foo);
foo.getValue(); //6

foo.setValue(5);
func2(foo);
foo.getValue(); //5

powinieneś już widzieć różnicę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0