Henrik Høegh wrote:
> Hey,
>
>
>>>jeg sidder lige med en java opgave jeg ik ka hit u a....
>>>
>>>jeg har min main her:
>>>
>>>int tal1 = 3;
>>>int tal2 = 5;
>>>
>>>doVend(tal1,tal2);
>>>
>>>de skal vendes af én metode... hvordan gøres det ??
>>
>>Hvis løsningen skal laves i java, har du et problem.
>>Alle basic types bliver i Java overført som pass-by-value. Dvs at selve
>>tallene 'tal'1 & 'tal2' vil blive overført til metoden som 3, 5. Du kan
>>gøre lige hvad du vil med de tal inde i metoden, den vil IKKE kunne
>>ændre på tal1 & tal2. Du kan kun swappe objekter, hvis du kan ændre på
>>selve indholdet af objektet, da alle objekter bliver overført som
>>pass-by-reference.
>>
>
> Sidder lige og keder mig... kan det heller ikke lade sig gøre, hvis han
> bruger this foran?
Beklager. Du skal bruge en måde at passe-by-reference på i Java --- hvad
Java ikke har. For illustrationens skyld: I C++ ville man kunne skrive
void swap(int& tal1, int& tal2) {... }
Java er et nemt sprog
I dette tilfælde skal man bare huske at
1) Der finde kun built-in/primitive type; samt pointere til objekter;
2) Alle funktioner er pass-by-value.
Den "rigtige" løsning her i selvfølgelig indkapsling:
Int tal1 = new Int(3);
Int tal2 = new Int(5);
tal1.swap(tal2);
// tal1.value()=5; tal2.value()=3
hvor
class Int {
private int value;
int value() { return value; }
void setvalue(int val) { value = val; }
void swap(Int rhs) {
int temp = rhs.value();
rhs.setValue(value());
setvalue(temp);
}
}
Men Java sutter lidt (IMHO) til den slags
"lav-klasser-der-opfører-sig-ligesom-built-in-types" opgaver. Ligesom
Java (og C++) har en alvorlig mangel: multifunktioner....
--
mvh. Esben
home.worldonline.dk/~mesben