[Java] Hjälp med att förklara referenser

Permalänk
Medlem

[Java] Hjälp med att förklara referenser

Hej, på en inlämningsuppgift i en programmeringskurs på högskolan fick jag denna fråga:

Citat:

När man talar om Java-programmering så spelar begreppet ’referens’ en stor
roll. Vad betyder begreppet?
Förklara utförligt och demonstrera med två exempel sambandet mellan referenser
och olika typer!

Jag tycker personligen att detta är en väldigt öppen fråga, men så här har jag skrivit mitt halvklara svar:

Citat:

Begreppet ”referenser” betyder inom Java-programmeringen de verktyg som används för att hantera variabler av olika slag.

En tydlig skillnad på referenser ser man mellan variabler som lagrar ett enskilt värde och variabler som lagrar flera värden i en array. Ett exempel på hur det beter sig med referenser i arrayer visas med följande kodfragment:

int[] array1 = {1, 3, 5, 7, 9}; int[] array2 = array1; array1 [2] = 6;

I det ovanstående kodfragment initieras heltals-arrayen array1 med värdena {1, 3, 5, 7, 9} och heltals-arrayen array2 med array1 innan jag ändrar det mittersta elementet i array1 till värdet 6. Ifall man har bara arbetat med vanliga variabler tidigare kan man med full förståelse tro att array2 inte ska ändras något för att ett element i array1 har ändrats; men så är givetvis inte fallet då jag i andra raden bara refererar array2 till platsen som array1 ligger på utan att tilldela array2 några värden.

Detta gör att det mellersta värdet i array2 ändras till samma värde som det i array1 då array2 refererar helt till elementen i array1 enligt funktionen på rad 2. Detta beteende kan leda till oönskade konsekvenser då värden i arrayer som refererar till en annan array kan ändras av den refererade arrayen utan att något görs med elementen i arrayerna som refererar till den ändrade arrayen.

Har ni något förslag på vad jag kan skriva för mer exempel i ämnet, då det krävdes två exempel; eller förklara något på ett bättre sätt?

All hjälp uppskattas hjärtligt!

Visa signatur

Speldator: AMD P2 X4 955BE @ 3,2 GHz + Antec Kühler H2O 620 | ASRock M3A770DE | Asus GTX560 Ti DCII 1GB | Corsair XMS3 4x2GB 1600MHz | Intel 520 240GB SSD | Samsung SpinPoint F3 500GB + Western Digital 500GB | FSP FSP650-80EGN 650W 80+ Gold | W7 HP SP1 64-bit| Cooler Master Elite 430 | LG IPS236 | Microsoft Wireless Keyboard/Mouse 700 v2.0 | Logitech X-230 | Steelseries Siberia v2 | Steelseries QcK

Permalänk
Hedersmedlem
Skrivet av udenius:

Har ni något förslag på vad jag kan skriva för mer exempel i ämnet, då det krävdes två exempel; eller förklara något på ett bättre sätt?

Kanske kan man rita några fina figurer? Såhär har till exempel någon illustrerat "list = new int[5];"

Du kan kanske bygga ut det till vad som händer i ditt exempel.