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.

- Rejestracja:około 20 lat
- Ostatnio:14 minut
Referencje są przekazywane przez wartość. Obiekty są przekazywane i obsługiwane zawsze przez referencje.
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:ponad 10 lat
- Ostatnio:7 miesięcy
- Lokalizacja:Warszawa
- Postów:3573
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:ponad 9 lat
- Ostatnio:12 miesięcy
- Postów:1788
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:około 14 lat
- Ostatnio:4 dni
- Postów:2512
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:około 9 lat
- Ostatnio:ponad 8 lat
- 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.