Static + Speicher + Bytecode etc. Brauche HILFE :/

Status
Nicht offen für weitere Antworten.
S

Stui

Gast
Hallo Leute ich hab mal ne ganz spezielle Frage.
Hier seht ihr ein ganz billiges 0815 Programm. Nichts dolles, doch ich muss eine Frage nachgehen.

Wo merkt sich Java, dass es schon einmal instantiert wurde? Wo und wie wird das intern gespeichert ?
Tatsache es gibt keine unterschied im Bytecode.

Das Programm gibt als Endproduckt drei Zeilen aus
IV1: 1 KV1: 1
IV2: 2 KV2: 1
IV3: 3 KV3: 1

Das ist toll und gut, aber warum? ja das liegt am static, aber warum? Wir gingen das Programm mit dem debugger durch ohne jegliche erkenntnis bringende Ressultate.

Also wer helfen kann, den wäre ich zu tiefstem Dank verpflichtet, aber danke schon mal fürs lesen bzw. Kopf zerbrechen :)

Unterlage1_16.jpg



Mfg Stui[/img][/code]
 

foobar

Top Contributor
Wo merkt sich Java, dass es schon einmal instantiert wurde? Wo und wie wird das intern gespeichert ?
Warum willst du das wissen? Ist das wichtig um den Modifier static, verwenden zu können? Was genau ist denn das Problem?
 
S

stui

Gast
Ist ne Aufgabe von meinem Lehrer, wir sollen dazu im Internet recherchieren. Wenn nach mir gehen würde, würden wir nur Java programmieren, aber unser Freak-Lehrer will ja alles genausten druchgehen d.h. Java-Code => Bytecode => Maschienen Code (Assambler) etc...

Nun ja da sind wir eben im Unterricht auf dieses Problem gestoßen. Und keiner weiss warum, nicht mal der Lehrer.

Bei jeder Instanzierung zählt er bei InstanzVariable ein hoch, aber bei static nicht, das läuft er einmal durch und dann warst es auch. Da haben wir versucht über den debugger zu verfolgen, aber wie erwähnt ohne erfolg, er lässt, wie oben beschrieben, das programm druch laufen und nicht wie man vermutet zeile für zeile

Hab selbst probleme da durch zu steigen, darum entschuldige ich mich, falls ich etwas konfus formuliere :/
 

babuschka

Top Contributor
Das Ergebnis, das du gepostet hat kann nicht sein, oder?
Die statische Variable wird doch hochgezählt.

IV1: 1 KV1: 1
IV2: 1 KV2: 2
IV3: 1 KV3: 3

Das kommt jedenfalls bei mir raus, wenn ich den Code starte.
 

Griffin

Bekanntes Mitglied
Nun ja so wie ich das verstanden hab, gibt es Klassen- und Instanzvariablen genau aus diesem Grund!
Klassenvariablen sind Instanzunabhängig!! Heißt also, dass jede instanz den gleichen Wert für die Variable hat. Und Instanzvariablen sind eben dafür da, dass jede Instanz für sich veränderbar ist.

Wo merkt sich Java, dass es schon einmal instantiert wurde? Wo und wie wird das intern gespeichert ?
Tatsache es gibt keine unterschied im Bytecode.

Ich glaube das regelt die JVM und da kann man nur schlecht reinschauen!?!?

Das ist toll und gut, aber warum? ja das liegt am static, aber warum?

Ts, weil die Entwickler von Java das so wollen :p
 
S

Stui

Gast
Ne grade nicht ^^ da musst du mir schon glauben :) das hat schon seine richtigkeit. Es geht ja auch lediglich um den internen vorgang welcher einen zu diesen ergebniss kommen lässt.
 

Griffin

Bekanntes Mitglied
blue-phoenix hat schon recht. Die Klassenvariable gilt für alle Instanzen von Variable. Deshalb wird nur die gezählt. Die Instanzvariable wird jeder Instanz "neu zugewiesen". Also hast du am Ende eigentlich 4 variablen (bitte nicht hauen für diese Formulierung).

instanz_1.InstanzVariable
instanz_2.InstanzVariable
instanz_3.InstanzVariable
instanz_x.KlassenVariable
 
B

Beni

Gast
Und der obligate Verweis auf die FAQ! :wink:

P.S. Der Lehrer will euch Java beibringen, und versteht nicht mal diesen Code... :roll:
 
S

Stui

Gast
Ips sorry mein Fehler, ist doch wirklich so

IV1: 1 KV1: 1
IV2: 1 KV2: 2
IV3: 1 KV3: 3

Aber warum ? ^^ gleiche frage weiterhin...
^^ kein Javamitarbeiter hier ? *gg* :/
 

Illuvatar

Top Contributor
Weil es nur eine static Variable im Programm gibt aber je eine Instanzvariable pro Instanz. PUNKT.

Vielleicht wäre in der Variable-Klasse die Zeilen 8/9 besser so geschrieben worden:
Code:
this.instanzVariable++;
Variable.klassenVariable++;
 
B

Beni

Gast
Genau darum:
Griffin hat gesagt.:
blue-phoenix hat schon recht. Die Klassenvariable gilt für alle Instanzen von Variable. Deshalb wird nur die gezählt. Die Instanzvariable wird jeder Instanz "neu zugewiesen". Also hast du am Ende eigentlich 4 variablen (bitte nicht hauen für diese Formulierung).

instanz_1.InstanzVariable
instanz_2.InstanzVariable
instanz_3.InstanzVariable
instanz_x.KlassenVariable

Ich versuchs mal anders zu formulieren.

Stell dir mal vor: eine Klasse ist der Bauplan; ein Objekt (=Instanz) das Haus, das nach dem Bauplan hergestellt wird.

Eine Instanzvariable ist eine Variable die zu einem Haus (Mehrzahl!) gehört, z.B. die Anzahl Heizungen.
Eine Klassenvariable ist eine Variable die zu dem Bauplan (Einzahl!) gehört, z.B. wieviele Häuser schon gebaut wurden.

Jedesmal wenn ein neues Haus gebaut wird (new Variable) wird dem Haus genau eine Heizung eingebaut (instanzVariable++)

Jedesmal wenn ein neues Haus gebaut wird, macht der Architekt ein Strich auf dem Bauplan, (klassenVariable++), und da es nur einen Bauplan gibt...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S static methoden Allgemeine Java-Themen 9
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
G static- Methoden überschreiben Allgemeine Java-Themen 10
E Geschwindigkeit static Allgemeine Java-Themen 6
V Static oder wie? Allgemeine Java-Themen 61
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
G Java-Befehle Native und Static Allgemeine Java-Themen 2
conan2 static-Block in Klassen Allgemeine Java-Themen 6
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
S singleton vs. static Allgemeine Java-Themen 7
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
P Singleton vs static Allgemeine Java-Themen 19
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4
J Problem mit static/non-static Allgemeine Java-Themen 2
G getAppletContext() in static Methode Allgemeine Java-Themen 3
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
G static vor einem array Allgemeine Java-Themen 2
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
A JSP & static-Variablen Allgemeine Java-Themen 3
B Static Import: Syntaxfrage Allgemeine Java-Themen 2
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
N this im public static void Allgemeine Java-Themen 3
C Communication zwischen zwei Projekte - static objects Allgemeine Java-Themen 4
S static mit abstract und in interface Allgemeine Java-Themen 10
C Virtueller Speicher Allgemeine Java-Themen 36
sascha-sphw Auf GoPro Speicher zugreifen Allgemeine Java-Themen 10
TheJavaKid Mit Java die Festplatte mit dem meisten freien Speicher finden Allgemeine Java-Themen 7
J Strings int textdokumente speicher Allgemeine Java-Themen 3
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
M Speicher der VM Allgemeine Java-Themen 4
W PDFBox "Nicht genügend Speicher" Allgemeine Java-Themen 2
S Speicher-Problem Allgemeine Java-Themen 4
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
V Input/Output BufferedI/OStream leert den Speicher Allgemeine Java-Themen 7
G Speicher erhöhen Allgemeine Java-Themen 10
R Programm frisst 'Virtuellen Speicher' wie PacMan Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben