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.
Jak przekazywane są obiekty w Javie?
- 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.
- 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++
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1788
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;
}
}
- 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:
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ę.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 24