En datatype spænder over flere ting. For det første kan det være en primitiv datatype, som i Java fx. er en int, double eller boolean m.fl. En abstrakt datatype(ADT) abstraherer over de primitive. En opskrift på en ADT er givet ved de data, ADT'en skal indeholde og de metoder/funktioner/procedurer ADT'en skal stille til rådighed. For et par dage siden blev jeg stillet overfor en eksamensopgave med en ADT. Denne ADT var en ønskeliste, der indeholdt navnet på den ting, man ønskede sig og prisen på denne - altså de data ADT'en skulle indeholde. Af metoder var der f.eks. defineret FindMinimumPris, som returnerer ønsket med den laveste pris.
ok Henrik ADT erjeg fortrolig, kender godt til MAP, Grafer, Mængde, Collection,Indexed osv. Det er mere den simple datatype jeg ikke helt har tjekt på. Hvad sker der f.eks i memory, hvor gemmes den. En simpel datatype er vist et dataobjekt på runtime tidspunktet, der indehodler forskellige værdier, hvornår defineres disse værdier og hvordan er scoopet når en datatypen ligger i en metode ?
Jeg er ikke sikker på, at jeg kan give dig et fyldestgørende svar, men jeg prøver.
En ADT bliver allokeret på heap'en, hvorimod en primitiv datatype allokkeres på stack'en, som ifølge Bruce Eckel's "Thinking in Java" er meget hurtigere. Forskellen på dem er endvidere, at ADT'en allokkeres som en reference, mens en simpel, går direkte på værdien. Eksempel:
int i = 35; int y = i; i = 22;
I ovenstående tilfælde vil y stadig være 35. Anderledes ville det være, hvis det var en reference.
Hvis du definerer en simpel datatype inden i en metode, kan du kun bruge den der.
Hvis du prøver at køre det, vil du se, at selvom man kun udfører setTime(...) på d1, så vil det også gælde for d2. Dette skyldes, at d1 og d2 kun er objektreferencer, der peger på samme objekt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.