Speicherplatzanforderung von Konstanten

Status
Nicht offen für weitere Antworten.

Matrim

Mitglied
Hallo,

für die Leserlichkeit von Quellcode ist es sicherlich besser sowas zu machen:
Code:
  private static final int INT_REFERENZ = -15;
  ...
  if (intWert == INT_REFERENZ)
  {
     ....
  }
als
Code:
  if (intWert == -15)
  {
    ...
  }
Allerdings benötigt man doch mehr Speicherplatz, oder? Oder gibt es sowas, wie bei C++, wo man etwas definiert und der Compiler es dann einfach ersetzt, so dass es keinen Speicherplatz für eine zusätzliche Variable braucht?

MfG.
 
B

Beni

Gast
Der Speicherberbrauch für einen zusätzlichen "int" sind 4 Bytes... davon wird dein Progi nicht langsamer.

Gefährlich wird es erst, wenn du 100000 zusätzliche Konstanten benötigst, aber das ist wohl selten der Fall.
 

Matrim

Mitglied
Ja, langsamer nicht, aber schon gar nicht effizienter.

Programmiere ich also für Umgebungen, in denen Speicherplatz rar ist, sollte ich auf solche Quellcodeverschönerungen verzichten.

Wie gesagt, bei manchen Compilern (anderer Programmiersprachen) kann man Literale definieren, die dann ersetzt werden, beim compilieren.

Trotzdem danke.
 
B

Beni

Gast
Matrim hat gesagt.:
Programmiere ich also für Umgebungen, in denen Speicherplatz rar ist, sollte ich auf solche Quellcodeverschönerungen verzichten.

Also die 4 Bytes würde nicht mal meinen alten Taschenrechner umhauen, schon gar nicht ein heutiges Rennmaschinenhandy (darauf willst du doch hinaus?).
 

Isaac

Bekanntes Mitglied
Wenn du das unbedingt so machen willst weil dir die 4 Byte abgehen dann schreib dir halt deinen eigenen Präprozessor der alle vorkommen von PRAEPROZESSOR_XXX druch das entsprechende Literal ersetzt.

Wenn es etwas nicht gibt, schreib es eben selbst. Geht nicht, gibts nicht...du entwickelst Software.
 

Matrim

Mitglied
Isaac hat gesagt.:
Wenn du das unbedingt so machen willst weil dir die 4 Byte abgehen dann schreib dir halt deinen eigenen Präprozessor der alle vorkommen von PRAEPROZESSOR_XXX druch das entsprechende Literal ersetzt.

Wenn es etwas nicht gibt, schreib es eben selbst. Geht nicht, gibts nicht...du entwickelst Software.

Gut, einen eigenen Präprozessor schreiben ...
Da gibt es also noch etwas, über das ich mich informieren kann.
(So wie ich das sehe, reicht (ist es) doch ein Textersetzungstool, oder? Halt ausserhalb von Java?)

Danke für den Hinweis.
 
B

Beni

Gast
Ein Ersetzungstool dürfte reichen.

Aber guck dir mal den Präprozessor von c++ an, das ist eine ganze Sprache (auch mit if's und ect).

Kommt halt draufan, wie kompliziert du es gerne hättest :wink:
 

Illuvatar

Top Contributor
Matrim hat gesagt.:
Isaac hat gesagt.:
Wenn du das unbedingt so machen willst weil dir die 4 Byte abgehen dann schreib dir halt deinen eigenen Präprozessor der alle vorkommen von PRAEPROZESSOR_XXX druch das entsprechende Literal ersetzt.

Wenn es etwas nicht gibt, schreib es eben selbst. Geht nicht, gibts nicht...du entwickelst Software.

Gut, einen eigenen Präprozessor schreiben ...
Da gibt es also noch etwas, über das ich mich informieren kann.
(So wie ich das sehe, reicht (ist es) doch ein Textersetzungstool, oder? Halt ausserhalb von Java?)

Danke für den Hinweis.

Kannst du genauso mit Java schreiben.
Das Programm wird auf der Kommandozeile mit dem Dateinamen aufgerufen.
Dann geht es mit einem BufferedReader durch.
Es muss ja nur ganz einfach sein, z.B. wenn die Zeilen im Programm mit # beginnen, tust du das danach in ein Hashtable, ansonsten hängst du es an ein Stringbuffer an.
Danach gehst du das Hashtable durch und ersetzt im ganzen eingelesenen StringBuffer die Key- durch die Valuewerte.
Das Programm löscht die Datei und schriebt den StringBuffer rein.
Danach ruft es den Java-Compiler auf.
 
B

bygones

Gast
vielleicht habe ich was übersehen - aber ersetzt nicht der Compiler automatisch alle Konstante ??? Meines Wissens sind die Konstanten nur in den java files für den Programmierer zu nutze.....
 

Matrim

Mitglied
deathbyaclown hat gesagt.:
vielleicht habe ich was übersehen - aber ersetzt nicht der Compiler automatisch alle Konstante ??? Meines Wissens sind die Konstanten nur in den java files für den Programmierer zu nutze.....

Genau das wollte ich wissen, aber Beni hat ja schon gemeint, dass es nicht so ist.
 
B

Beni

Gast
Matrim hat gesagt.:
Genau das wollte ich wissen, aber Beni hat ja schon gemeint, dass es nicht so ist.
Oooo, wenn ich so verstanden wurde, hab ich mich sehr unglücklich ausgedrückt.

Ich wollte vorallem sagen, dass es praktisch keinen Unterschied macht, ob das umgewandelt wird oder nicht, weil die 4 Bytes des int's niemandem weh tun (auch keinem kleinen System).
 

Isaac

Bekanntes Mitglied
deathbyaclown hat gesagt.:
vielleicht habe ich was übersehen - aber ersetzt nicht der Compiler automatisch alle Konstante ??? Meines Wissens sind die Konstanten nur in den java files für den Programmierer zu nutze.....

Hmm gute Frage, darüber habe ich mir nie gedanken gemacht. Nehmen wir mal an ich habe alle Konstanten in einer Klasse "Constants" definiert. Wenn dem so wäre, würde die Klasse Constants im Kompilat ja obsolet. Werd ich mal ausprobieren wenn ich Zeit habe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Neumi5694 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
R Konstanten initialisieren - FRAGE Allgemeine Java-Themen 3
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
E Variablen Konstanten definieren Allgemeine Java-Themen 4
F Konstanten mir Strings "verknuepfen" Allgemeine Java-Themen 10
Z Konstanten in Java Allgemeine Java-Themen 9
S jdk versus openjdk - Optimierung von Konstanten? Allgemeine Java-Themen 8
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
D binäres ODER oder mehr Konstanten? Allgemeine Java-Themen 10
I Konstanten bei Erzeugung eines Objekts initialisieren Allgemeine Java-Themen 3
Schandro Annotation vs Javadoc bei Konstanten Allgemeine Java-Themen 2
L Konstanten der Klasse Color - Naming Conventions Allgemeine Java-Themen 6
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
F Warum lokale Konstanten klein schreiben? Allgemeine Java-Themen 4
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
R Namen von Konstanten mit Strings vergleichen Allgemeine Java-Themen 7
T Probleme mit Konstanten und Stringverkettung Allgemeine Java-Themen 5
D Zusammensetzen von konstanten String Arrays zu einem Neuen Allgemeine Java-Themen 14
C Seltsame Konstanten (und Verwendung) Allgemeine Java-Themen 15
R Erstellen zusätzlicher Konstanten beim Kompiliervorgang Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben