Jak przekazywane są obiekty w Javie?

Jak przekazywane są obiekty w Javie?
  • Rejestracja: dni
  • Ostatnio: dni
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.

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
1

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

  • Rejestracja: dni
  • Ostatnio: dni
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.

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
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++

DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
0
Kopiuj
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;
  }
}
Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

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

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

Kopiuj
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:

Kopiuj
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ę.

JavaDevv
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.