Datentypen

Susi194

Mitglied
Hi es geht um eine Aufgabe über Datentypen.

Es gibt 3 Datentypen, primitive Datentypen, Klassentypen und Referenztypen und es gibt 3 Speicherbereiche Stack, Heap und einen statischen bereich. Ist wahrscheinlich eine recht einfache darstellung, aber es ist ja auch ein Java Grundlagenkurs. Die Tabelle schaut so aus und man muss nun eine Zuordnung treffen:

Datenelement, Speicher, Typ

lokale Variable, Stack, prim. Datentyp

Parameter, Stack, prim. Datentyp

Objekt, Heap, Klassentyp

Objektattribute, Heap, prim Datentyp

wie unterscheiden sich eigentliich referenztyp und klassentyp?
und wie sähe die richtige zuordnung aus?

Vielen Dank im Voraus!
 
Zuletzt bearbeitet:

Susi194

Mitglied
ok, wie schaut es nun mit meiner tabelle aus? ein attribut kann doch auch ein referenz oder klassentyp sein oder?

ich kann ja auch ein attribut namens String s "123" haben
 

httpdigest

Top Contributor
Kurz zur Nomenklatur, damit alle wissen, was du meinst: Der korrekte Name für "Objektattribut", wie von dir oben genannt, ist: Feld.
Felder unterteilen sich nochmal in "Instanzfelder" und "statische Felder". Soetwas wie "Attribute" gibt es in Java nicht, bzw. bedeutet es im Kontext der JVM und dem Classfile-Format etwas anderes.
Aber schreibe hier doch bitte einmal die tatsächliche Aufgabenstellung hin. Daran lässt sich besser diskutieren, was eigentlich gefordert ist und erlaubt keinen Fehlerspielraum für eventuelle Interpretationen deinerseits.
Was mich wundert, ist, dass hier viel mehr auf Aspekte der Java Virtual Machine specification eingegangen wird als auf Java als Sprache an sich. Z.B. bezüglich der einzelnen Speicherbereiche: https://docs.oracle.com/javase/specs/jvms/se10/html/jvms-2.html#jvms-2.5
 

Susi194

Mitglied
ähm, wir sprechen in java immer von attributen, das sind einfach merkmale eines objekts, die werden in einer klasse definiert.

Ein Kreisobjekt hätte zum beispiel die Attribute double x, double y und double radius. also nen mittelpunkt und nen radius.

also die aufgabe ist es die datenelemente: lokale Variable, Parameter,Objekt und (Objekt-)Attribute zu zuteilen in Welchem Speicherbereich sie liegen und von welchem Datentyp sie sind.

Speicherbereiche haben wir statischen Bereich, Stack und Heap. Alles wie gesagt sehr grob

und bei Datentypen haben wir primitive Datentypen, Klassentypen und Referenztypen
 

Anhänge

  • Screenshot (7).png
    Screenshot (7).png
    103 KB · Aufrufe: 39

httpdigest

Top Contributor
In allgemeinem objektorientiertem Design über "Attribute" zu sprechen ist ja auch völlig in Ordnung. Wenn es aber an die Implementierung in Java bzw. einer JVM Sprache geht, und man hier wirklich ganz exakte Begriffe verwenden sollte, sollte man besser von Feldern sprechen. Felder sind dann ja einfach nur die Java-Realisierung von Attributen eines objektorientierten Designs. Das mag vielleicht nach Haarspalterei klingen, aber noch viel mehr regt mich gerade etwas die flapsige und willkürliche Benennung der Begriffe in deiner Aufgabenstellung auf. Was soll denn bitte "statischer Speicher" sein? Darunter _kann_ der Schüler/Student die (engl.) "Method Area" in der JVM verstehen oder aber den (engl.) "Constant Pool". Desweiteren gibt es rein überhaupt keine Unterscheidung zwischen einem "Klassentyp" und einem "Referenztyp" (zumindest aus Java und JVM Spezifikationssicht, die meiner Meinung nach die einzige Wahrheit darstellen sollte).
Da diese Begriffe aber sicherlich nicht das erste Mal mit dieser Aufgabenstellung fallen, sondern in deiner Vorlesung/Übung/Schulstunde vom Dozenten exakt definiert wurden und du weißt, was der Dozent damit genau meint, bist wahrscheinlich nur du (und deine Mitschüler/Kommilitonen) in der Lage, die Aufgabe gemäß den Erwartungen des Dozenten/Aufgabenstellers richtig zu lösen.
 

Susi194

Mitglied
exakt definiert ist es nicht worden und ich sehe auch keinen Unterschied zwischen Referenztyp und Klassentyp. Auf der Folie stehen flappsige Formulierungen. Also in C wäre der statische bereich z.B ein Bereich im Hauptspeicher in dem globale Variablen liegen.

also meine überlegung ist folgende:

lokale Variable, Stack,kann ein prim. Datentyp aber auch ein Klassentyp sein z.B String oder auch eine Referenz sein

Parameter,Stack,alles möglich: prim. Datentyp oder Klassntyp oder eine Referenz auf ein Objekt die übergeben wird

Objekt,Heap, ist vom Typ der Klasse nach dessen Muster es erzeugt wurde

Objektattribut,weiß nicht wo das gespeichert wird denke mal beim Objekt also aufm Heap, kann auch wieder alle 3 Typen sein
 

httpdigest

Top Contributor
Deine Einschätzung der Tabelle sehe ich zum großen Teil auch so.
Meine Vermutung bei "Objektattribut" wäre auch, dass hiermit gemeint ist, wo die Existenz und der Typ eines Attributes/Feldes zu einer Klasse gespeichert wird. Also sozusagen nicht der jeweilige Wert, der einer Instanz der Klasse innewohnt, sondern das Feld an sich (sprich, das was man per Java Core Reflection API an einer Klasse abfragen kann).
In diesem Falle wäre es wohl der "statische Bereich".
 

Susi194

Mitglied
also Konstanten würden in diesem statischen Bereich liegen oder? die wären über den gesamten Programmablauf auch "am leben"?

Bei den Attributen bin ich mir eben auch nicht sicher, denn wenn ich zu beginn der Klasse Attribute definiere, muss aber das Objekt ja nicht unbedingt das Attribut "besitzen" --> Aufruf des Defaultkonstruktors

Ich denke hier jedoch das mit Objektattribut ein attribut gemeint ist das beim konstruktoraufruf dem objekt zugewiesen wurde.

wären beide Attributtypen im statischen bereich?
 

httpdigest

Top Contributor
In Java werden per Definition/Spezifikation immer _alle_ Felder einer Klasse bei Instanziierung mit ihrem jeweiligen Defaultwert belegt. Es gibt also immer alle Felder (anders als z.B. in JavaScript). Ob du sie nun im Konstruktor oder sonstwo setzt, spielt keine Rolle. Und es existiert auch keine JVM Implementierung, die ich kenne, die das Speicherlayout einer Instanz der Klasse dementsprechend ändert, je nachdem, ob du nun Felder setzt oder nicht. Zumindest die Oracle und OpenJDK Implementierungen tun dies nicht. Weder im Interpreter noch im C1 oder C2 Compiler.
Bei Konstanten hängt es jetzt auch wieder davon ab, ob hier Compilezeit-Konstanten gemeint sind, also Felder, deren Wert zur Compilezeit schon feststeht; oder einfach nur Felder, die als static und final definiert sind und ihren Wert über z.B. einen statischen Methodenaufruf bekommen.
Aber alles weitere wäre jetzt nur Rumgerate, weil ich keine Ahnung habe, was der Aufgabensteller hören will.
 

httpdigest

Top Contributor
Du verwendest gerade wieder einen anderen Begriff, nämlich "Objektvariablen".
Was genau meinst du damit? Es ging bisher darum, herauszustellen, dass es sich bei "Objektattribut" wohl um ein Feld handelt. Und da vermutlich um ein Instanzfeld.
Es ist auch schwer, die Begriffe richtig einzudeutschen und genau deshalb kann hier jeder verstehen, was er will und man kann sich vermutlich schnell an Definitionen aufreiben.
Ich wollte natürlich keinen "Mist" erzählen, wie du leider behauptest.
Also bitte entschuldige, wenn es so rüberkam.
 

Susi194

Mitglied
Alles klar, danke! Fand auch nicht, dass mist erzählt wurde. Ich bin selbst ja einsteiger und muss sagen, dass es in vielen Bereichen einfach unterschiedliche definitionen gibt. Das kann von Buch zu Buch schwanken, auch unser prof nutzt des öfteren unterschiedliche Begriffe.
 

mrBrown

Super-Moderator
Mitarbeiter
Und es existiert auch keine JVM Implementierung, die ich kenne, die das Speicherlayout einer Instanz der Klasse dementsprechend ändert, je nachdem, ob du nun Felder setzt oder nicht. Zumindest die Oracle und OpenJDK Implementierungen tun dies nicht. Weder im Interpreter noch im C1 oder C2 Compiler.
Zumindest kann der ganze Klassenoverhead wegoptimiert werden, sodass die nötigen Felder direkt und nur in Registern liegen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
T Unterschiedliche Datentypen - worin abspeichern? Java Basics - Anfänger-Themen 18
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
J Einige Anfängerfragen (Datentypen, Wertebereich) Java Basics - Anfänger-Themen 11
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
T Datentypen Eigene Datentypen Java Basics - Anfänger-Themen 15
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
Nicolex3 Größere Datentypen Java Basics - Anfänger-Themen 35
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
L Binären Bäume für beliebige Datentypen Java Basics - Anfänger-Themen 15
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
SHasteCode Datentypen Überlauf primitiver Datentypen Java Basics - Anfänger-Themen 4
Antegra Tekkrebell Primitive Datentypen Literal 8072 Java Basics - Anfänger-Themen 21
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
S Datentypen Java Basics - Anfänger-Themen 4
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
H wählen des kleinstmöglichen Datentypen für Gleitkommazahlen. Java Basics - Anfänger-Themen 2
S Datentypen Java Basics - Anfänger-Themen 2
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
J Zusammenhang Numbers und nummerische Datentypen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
D Spezifikation abstrakter Datentypen Java Basics - Anfänger-Themen 3
W Datentypen Datentypen vergleichen Java Basics - Anfänger-Themen 4
B JAVA Datentypen/Überlauf Java Basics - Anfänger-Themen 4
I Erste Schritte HILFE bei Datentypen Java Basics - Anfänger-Themen 2
J Wertebereiche und Datentypen Java Basics - Anfänger-Themen 12
N Methode mit 2 Datentypen. Fehler? Java Basics - Anfänger-Themen 1
N Probleme mit Datentypen Java Basics - Anfänger-Themen 6
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
K new / Datentypen Java Basics - Anfänger-Themen 3
S Datentypen und ihre Größe Java Basics - Anfänger-Themen 21
T Variablen Varargs und beliebige Datentypen Java Basics - Anfänger-Themen 7
S Datentypen Sonderbehandlung primitiver Datentypen, fixe Konstanteninterpretation Java Basics - Anfänger-Themen 10
G Wertebereiche bei Datentypen Java Basics - Anfänger-Themen 10
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
H Mehrer Datentypen aus einer Methode ausgeben. Java Basics - Anfänger-Themen 25
O Array mit unterschiedlichen Datentypen ausgeben... Java Basics - Anfänger-Themen 16
A Generische Datentypen Java Basics - Anfänger-Themen 8
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
T ArrayList mit verschiedenen Datentypen verhindern Java Basics - Anfänger-Themen 8
N Bedingung für Datentypen Java Basics - Anfänger-Themen 3
R Array aus verschiedenen Datentypen Java Basics - Anfänger-Themen 29
J Datentypen Datentypen Java Basics - Anfänger-Themen 7
S Datentypen Array fill Methode - unterschiedliche Datentypen Java Basics - Anfänger-Themen 6
H null und primitive Datentypen Java Basics - Anfänger-Themen 6
N ArrayList mit eigenem Datentypen Java Basics - Anfänger-Themen 3
B Wie kann ich unterschiedliche Datentypen in einem Feld abbilden? Java Basics - Anfänger-Themen 5
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
M Frage zu Datentypen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
O Rückgabewert mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 10
S Nicht Primitive Datentypen Java Basics - Anfänger-Themen 5
C Verwendung von primitiven Datentypen Java Basics - Anfänger-Themen 8
Spin Eigenen Abstrakten Datentypen Java Basics - Anfänger-Themen 28
J Datentypen Rechnen mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 3
B Wieviele bits belegen die Datentypen? Java Basics - Anfänger-Themen 2
S Alle Datentypen in byte Array und zurückwandeln Java Basics - Anfänger-Themen 2
C Explizite und implizite Datentypen Java Basics - Anfänger-Themen 12
F primitive Datentypen, String, Klassen Java Basics - Anfänger-Themen 16
Povlsen84 HashSet mit eigenen Datentypen Java Basics - Anfänger-Themen 6
J Verschieden Datentypen in ein "Array" Java Basics - Anfänger-Themen 13
M HashMap mit primitiven Datentypen Java Basics - Anfänger-Themen 10
SebSnake Operatoren für eigene Datentypen Java Basics - Anfänger-Themen 3
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
G Überladen von Konstruktoren mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 4
R datentypen konvertierung u modulorechnung Java Basics - Anfänger-Themen 15
G primitive Datentypen als Referenz an eine Methode übergeben Java Basics - Anfänger-Themen 2
G Wertebereiche und Datentypen Java Basics - Anfänger-Themen 3
W Datentypen in JAva Java Basics - Anfänger-Themen 2
G verschiedene datentypen in arraylist Java Basics - Anfänger-Themen 14
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
I Array für verschiedene Datentypen? Java Basics - Anfänger-Themen 5
E Eigenen datentypen erstellen Java Basics - Anfänger-Themen 14
Y Neuen Datentypen erstellen Java Basics - Anfänger-Themen 12
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
M Datentypen zu erzeugen? Java Basics - Anfänger-Themen 2
S Switch für komplexe Datentypen? Java Basics - Anfänger-Themen 7
7 Datentypen Java Basics - Anfänger-Themen 8
S Array mit mehreren Datentypen Java Basics - Anfänger-Themen 5
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
F Einlesen von verschieden Datentypen Java Basics - Anfänger-Themen 15
G Verschiedene Datentypen in Vector packen und zurück Java Basics - Anfänger-Themen 3
G Datentypen Java Basics - Anfänger-Themen 2
D Datentypen umwandeln Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben