Frage von nicomilasta, 50

Unterschied zwischen Datentypen, primitiven Datentypen und Objekttypen?

Hallo, ich lerne für eine Klausur aber ich konnte im Web und in meinem Ordner nicht herausfinden, was der genaue Unterschied zwischen Datentypen, primitiven Datentypen und Objekttypen ist. kann mir bitte jemand helfen?

Vielen Dank!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnorxyThieus, 33

Also das dürfte sicherlich von der Programmiersprache abhängen ... ich sag mal, wie es in C# meines Wissens definiert ist:

  • Datentypen nennt man allgemein alles (bis auf void), das - wie der Name schon sagt - den Typ eines Members, also einer Variable, Eigenschaft, eines Feldes oder einer Methode angibt, also, was im Speicher jeweils zu lesen ist.
  • Davon gibt es im Besonderen die primitive Datentypen, welche vom Compiler vordefinierte Typen bezeichnen. Dies sind etwa int, string, bool, etc. I. d. R. sind es - zumindest bei C# - nur "Verknüpfungen" auf die jeweiligen Objekttypen wie String, UInt32 oder Boolean.
  • Objekttypen bezeichnen den jeweiligen Datentyp eines Objektes aus einer normalen Klasse. Besondere Klassen sind etwa Object, Enum oder Attribute.

Ich hoffe, ich konnte dir helfen; wenn ich mich irgendwo geirrt haben sollte, lasst es mich bitte gerne wissen :-)

Mit freundlichen Grüßen,
KnorxThieus (♂)

Kommentar von androhecker ,

Ein Blick in die Tags hilft, ist aber nicht deine Schuld, das sollte man schon deutlicher ausdrücken.

Kommentar von KnorxyThieus ,

Okay, aber all zu stark scheint sich das ja nicht zu unterscheiden von C# ... :)

Antwort
von androhecker, 25

Primitive Daten sind alle die klein geschrieben werden, also short, long, int, double, etc. Diese Speichern nur einen einzelnen Wert und werden auch nur als Wert übergeben.
Objekttypen sind eben Objekte von einer Klasse, zB ein String oder eine Liste, bei diesen wird das Objekt selbst und nicht nur ein Wert übergeben.

Kommentar von androhecker ,

Schlechte Bewertung, für was? Ach ja, immer das gleiche...

Antwort
von Omnivore10, 12

Datentypen sind es erst mal alles.

primitive Datentypen kenn ich eigentlich nur von Java, da esn keine vollständig objektorientierte Programmiersprache ist! Das bilden die einfachen Datentypen wie int, double und sowas. Dies sind keine Objekte. Bei C# hingegen schon, da diese Sprache vollständig objektorientiert ist!

Objekttypen sind echte Objekte, die eine Instanz einer Klasse darstellen.

Vielleicht kann man noch etwas weiter gehen: Objekttypen werden nämlich in aller Regel durch CallByReferenz angesprochen. Primitive Datentypen durch CallByValue. Bei C# kann man das durch ref und out explizit ändern. Bei java ist das nicht möglich.

Kommentar von androhecker ,

Java bietet genauso die Objekte Integer, Double, etc an, diese primitiven Datentypen gibt es aus dem Grund, dass sie einfach schneller sind und es deutlich angenehmer ist reine Werte zu übergeben anstatt jedes Mal das Objekt zu clonen.

Kommentar von Omnivore10 ,

1) bietet sie zwar an, aber nicht als Standard. Deswegen sind auch solch schöne dinge nicht möglich: 255.ToString("XX");

2) Man bräuchte die auch nicht zu klonen, wenn man ein anständiges System entwickelt hätte, dass man diese Datentypen mit CallByValue übergibt und den Rest mit CallByReference. Und explizit kann man das auch nicht ändern.

3) Ausserdem ist 1) nur eine Ausrede! .NET schafft es auch! Intern rechnen die nämlich auch auf Assemblerbasis mit den echten Integern!

4) Hatten wir das nicht heut schon ^^ : Genau das macht unter anderem Java für mich zur Qual ^^

Kommentar von androhecker ,

255.toString(), ziemlich sinnlos nicht? 2) Natürlich muss man dann Klonen, jedenfalls wenn das Objekt übergeben wird, wenn der Wert übergeben wird ist es keine Objektorietierung 3) Und, letztendlich muss man ja mit den Werten rechnen, das Problem ist dass dabei mehr Methoden Calls aufgerufen welche meistens länger dauern als die Operation selbst, Java lässt solche Rechnungen direkt von C aus berechnen, wodurch Java auch so schnell ist.

Kommentar von Omnivore10 ,

1)Nö! Wenn ich wissen will wie die Hexzahl ist, ist das schön!

Oder 0xFF.ToString();

2) Für sowawas gibts Strukturen. Natürlich nicht bei java

3) Da werden gar keine Methoden aufgerufen, weil in .NET Integer Strukturen sind. Da werden NUR die Werte genommen und ab durchs Rechenwerk!

4)

wodurch Java auch so schnell ist.

Nicht dein ernst oder? Java hat gegen .NET oder C/C++ keine Chance!

Keine passende Antwort gefunden?

Fragen Sie die Community