wann welche Konstanten verwenden?

ernst

Top Contributor
Hallo zusammen,

In Java gibt es verschiedene Konstanten (unten befindet sich ein Beispiel mit Quellcode):
Objektkonstante,
Klassenkonstante,
lokale Konstante,

1)
gibt es noch weitere Konstanten?

2) Welche sind sinnvoll bzw. sinnlos?
wenn die Objektkonstante (siehe unten) objektKonstante_sinnlos mit 123 initialisiert wird, hat sie in jedem Objekt den Wert 123. Das ist meiner Meinung nach sinnlos, denn dann könnte man gleich eine Klassenkonstante nehmen.

3) Habt ihr sinnvolle Beispiele für Objektkonstanten und lokale Konstanten ?

4) Soll man _alle_ Konstanten (Objektkonstante, Klassenkonstante, lokale Konstante) komplett mit Grossbuchstaben schreiben, wie z.B. KLASSENKONSTANTE_PI


mfg
Ernst


Java:
package konstante1;
public class StartklasseKonstante1 {
    public static void main(String[] args) {
        final int lokaleKonstante = 10;
        
        System.out.println("lokaleKonstante="+lokaleKonstante); 
        System.out.println("KLASSENKONSTANTE_PI="+MeineKonstanten.KLASSENKONSTANTE_PI); 
        Land holland=new Land(12.0);
        System.out.println("lokaleKonstante="+holland.objektKonstante_waehrungskurs);
    }
}
class Land{
    public final double objektKonstante_waehrungskurs;
    // In jedem Objekt hat diese Konstante den gleichen Wert. Dies ist sinnlos, da man 
    // dann gleich eine Klassenkonstante nehmen kann
    public final double objektKonstante_sinnlos = 123;
    
    // In jedem Land ist der Waehrungskurs eine spezifische, landesabhängige  Konstante
    public Land(double waehrungskurs){
        this.objektKonstante_waehrungskurs=waehrungskurs;
    }
}
class MeineKonstanten {
    public static final double KLASSENKONSTANTE_PI = 3.14;
}
 

Gucky

Top Contributor
Zum Beispiel die KeyEvents wie VK_Space sind final, weil sie zwar immer wieder gebraucht werden aber nicht verändert werden dürfen. Das ist auch gleichzeitig ein Beispiel für Punkt 3. Groß geschrieben werden die Namen nur dann, wenn sie statisch sind.

Finale Variablen lassen sich auch erst, zum Beispiel in einem switch case mit einem Wert befüllen. Das muss nicht sofort geschehen.
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
1) Spontan fallen mir nur konstante Klassen und Methoden ein.
2) In diesem Fall könnte man eine Klassenkonstante nutzen.
3+4) Ich schreibe nur "final static"-Variablen groß. Es gibt sehr viele lokale Konstanten, aber da leidet mMn die Lesbarkeit, wenn man diese als final deklarieren würde. Beispielsweise sind viele Parameter von Settern final. Oder wie in deinem Beispiel ist "waehrungskurs" eigentlich auch eine lokale Konstante. Wobei das weglassen von final eine potentielle Fehlerquelle ist.
 

ernst

Top Contributor
1)
>
>Zum Beispiel die KeyEvents wie VK_Space sind final, weil sie zwar immer wieder gebraucht werden
>aber nicht verändert werden dürfen.
>
VK_Space ist nicht final, siehe:
KeyEvent (Java 2 Platform SE v1.4.2)

2)
>
>Das ist auch gleichzeitig ein Beispiel für Punkt 3. Groß geschrieben werden die Namen nur dann,
>wenn sie statisch sind.
>
Nein, in Punkt 3 geht es um Objektkonstanten.
VK_Space ist aber eine static-Variable.


>
>Finale Variablen lassen sich auch erst, zum Beispiel in einem switch case mit einem Wert befüllen.
>Das muss nicht sofort geschehen.
>
Kannst du mir ein Beispiel geben?

mfg
Ernst
 

ernst

Top Contributor
2) In diesem Fall könnte man eine Klassenkonstante nutzen.

Was heisst "könnte"?
Wäre die andere Lösung:
public final double objektKonstante_sinnlos = 123;
nicht sinnlos bzw. welche Berechtigung hätte diese ?

3+4) Ich schreibe nur "final static"-Variablen groß. Es gibt sehr viele lokale Konstanten, aber da leidet mMn die Lesbarkeit, wenn man diese als final deklarieren würde.

Warum?
Warum soll man eine Konstante nicht mit final auszeichnen?
Wie willst du sonst eine Konstante bezeichnen?


Beispielsweise sind viele Parameter von Settern final. Oder wie in deinem Beispiel ist "waehrungskurs" eigentlich auch eine lokale Konstante. Wobei das weglassen von final eine potentielle Fehlerquelle ist.

Du meinst also daß:
public Land(final double waehrungskurs){
this.objektKonstante_waehrungskurs=waehrungskurs;
}

besser ist als:

public Land(double waehrungskurs){
this.objektKonstante_waehrungskurs=waehrungskurs;
}

Warum ist es besser?
Warum ist es eine potentielle Fehlerquelle?
Und vor allem: Was bedeutet (und was macht) das final vor einem formalen Parameter?

mfg
Ernst
 

Ruzmanz

Top Contributor
Was heisst "könnte"?
Wäre die andere Lösung:
public final double objektKonstante_sinnlos = 123;
nicht sinnlos bzw. welche Berechtigung hätte diese ?

Wenn die Konstante static ist, dann könnte man über Land.objektKonstante_sinnlos den Wert abfragen. Das ist aktuell nicht möglich. Jetzt muss erst ein Objekt angelegt werden und über das Objekt kann der Wert abgefragt werden. Im Normalfall ist das tatsächlich sinnlos, aber ich möchte nicht auschließen, dass es auch Anwendungsfälle gibt, in der das von Bedeutung ist.

Warum?
Warum soll man eine Konstante nicht mit final auszeichnen?
Wie willst du sonst eine Konstante bezeichnen?

Bequemlichkeit / Lesbarkeit. Warum hast du "waehrungskurs" nicht als final ausgezeichnet?

Java:
Du meinst also daß:
public Land(final double waehrungskurs){
this.objektKonstante_waehrungskurs=waehrungskurs;
}

besser ist als:

public Land(double waehrungskurs){
this.objektKonstante_waehrungskurs=waehrungskurs;
}

Warum ist es besser?
Warum ist es eine potentielle Fehlerquelle?
Und vor allem: Was bedeutet (und was macht) das final vor einem formalen Parameter?

Bei deinem Beispiel hast du vergessen die MwSt auf den Währungskurs zu addieren, deshalb habe ich den mal ergänzt. (Jetzt läuft mein Programm korrekt und deiner wahrscheinlich nicht)

Java:
public Land(double waehrungskurs){
    waehrungskurs = waehrungskurs + getMwSt();
    this.objektKonstante_waehrungskurs=waehrungskurs;
}

Wäre die Variable waehrungskurs final, könnte ich den Wert nicht ändern. Da selbst in riesigen Projekten dieser Fehler eher selten gemacht wird, halte ich es für unnötig jede lokale Konstante mit einem final auszuzeichnen.
 

ernst

Top Contributor
Wäre die Variable waehrungskurs final, könnte ich den Wert nicht ändern. Da selbst in riesigen Projekten dieser Fehler eher selten gemacht wird, halte ich es für unnötig jede lokale Konstante mit einem final auszuzeichnen.

1)
Schreibt man lokale Konstanten durchgehend mit Kleinbuchstaben bzw.
gibt es dazu eine Empfehlung?

2)
Wie schreibt man Objektkonstanten?

mfg
Ernst
 

BuddaKaeks

Bekanntes Mitglied
Also, mal zu der sinnlos-frage:

nehmen wir folgendes Beispiel:

Java:
public class Foo{

    private final int bar = 123;

}

Hier wäre dies wirklich "sinnlos", man könnte sie auch statisch machen.

Jetzt aber:

Java:
public class Foo{

    private final JFrame bar = new JFrame();

}

Wenn ich jetzt zwei Instanzen der Klasse
Code:
Foo
erstelle, werden zwei verschiedene
Code:
JFrame
s erstellt.
Mache ich
Code:
bar
statisch, wird das
Code:
JFrame
nur einmal erstellt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
M wann, welche schleife Java Basics - Anfänger-Themen 3
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
W Wann Rückgabewerte 0, 1, -1? Java Basics - Anfänger-Themen 27
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
W Wann nutze ich "import"? Java Basics - Anfänger-Themen 12
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
M Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben? Java Basics - Anfänger-Themen 19
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
N Wann und wie oft finalize Methode verwenden( überschreiben ) Java Basics - Anfänger-Themen 6
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
M Ab wann ist die Datei sichtbar? Java Basics - Anfänger-Themen 3
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
M Wann ist ein Programm beendet? Java Basics - Anfänger-Themen 6
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
M wann statische klassen? Java Basics - Anfänger-Themen 14
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
R Wann benutzt man << oder >> ? Java Basics - Anfänger-Themen 2
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Q SMS basierte Applikationen, welche Programmiersprache? Java Basics - Anfänger-Themen 8
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
tony241188 Implementieren Sie die Klasse Hersteller, welche die folgenden Elektrogeräte produziert Java Basics - Anfänger-Themen 3
FelixN Teilsummenproblem / welche Datenstruktur Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
W Welche Komponente ist geeignet? Java Basics - Anfänger-Themen 1
A Welche Operation ist das? Java Basics - Anfänger-Themen 2
J Welche Java-Version installieren Java Basics - Anfänger-Themen 9
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
K GUI Entwicklung - Welche Richtung passt für euch zum mobilen Zeitalter? Java Basics - Anfänger-Themen 4
T Datenbank | Welche am Sinnvollsten? Java Basics - Anfänger-Themen 5
S Welche Verteilung? Java Basics - Anfänger-Themen 1
L Welche Methode? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben