Unterschied zwischen Datentypen, primitiven Datentypen und Objekttypen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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 (♂)


androhecker  09.05.2016, 18:48

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

1
KnorxyThieus  09.05.2016, 18:57
@androhecker

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

1

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.


androhecker  09.05.2016, 22:40

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.

0
Omnivore10  09.05.2016, 22:46
@androhecker

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 ^^

0
androhecker  10.05.2016, 12:46

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.

0
Omnivore10  10.05.2016, 23:07
@androhecker

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!

0

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.


androhecker  09.05.2016, 21:47

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

0