Andreas Andersen wrote:
>
> Hvordan kan det så være at nedenstående udskriver 2 - java.lang.Integer er
> da ikke en simpel type.
I Java er det referencen til objektet der bliver 'passed by value'.
Så ændinger i minMetode vil ikke berøre det objekt der refereres til
i din main.
Arrays er undtagelsen, de bliver passed by reference.
public class Test {
public static void minMetode(Integer[] r) {
r[0] = new Integer(5);
}
public static void main(String[] args) throws Exception {
Integer[] r = new Integer[] {new Integer(2)};
minMetode(r);
System.out.println(r[0].intValue());
}
}
Søg evt. google: java pass by reference
Mvh Morten
>
> public class Test {
> public static void minMetode(Integer r) {
> r = new Integer(5);
> }
>
> public static void main(String[] args) {
> Integer r = new Integer(2);
> minMetode(r);
> System.out.println(r.intValue());
> }
> }
>
> Andreas
>
> Jacob Bunk Nielsen <spam@bunk.cc> skrev i en
> nyhedsmeddelelse:m3y9w9ni9c.fsf@paven.bunk.cc...
> > "Andreas Andersen" <aa@arweb.dk> writes:
> >
> > > Hvordan kan det være at hvis man sender et array til en metode og ændrer
> i
> > > arrayet i metoden så forbliver ændringerne der efter metodekaldet. Jeg
> > > troede alle parametre til metoder var lokale og ændringer gik tabt når
> man
> > > sluttede metoden uden at returnere noget.
> >
> > Det er fordi de ikke sender en kopi af arrayet med til metoden,
> > men blot en reference til arrayet. Sådan er det for alle ikke
> > simple typer i Java.
> >
> > --
> > Jacob
> > Artificial intelligence is no match for natural stupidity.
--
Morten Primdahl Caput A/S Tel +45 70 12 24 42
morten@caput.com Nygade 6 Fax +45 70 11 24 42
http://www.caput.com/ DK-1164 Kbh K