Globale Variablen

Status
Nicht offen für weitere Antworten.
D

Destiny1985

Gast
Hi !

Gibt es globale Variablen wie in C++ auch in Java ? Wenn ich die Variablen vor den Main-Funktion deklariere, kommt er damit nicht zurecht und spuckt Fehler, in C++ geht das so aber einwandfrei. Was muss ich tun, um auch in Java das zu erreichen ?

mfg

[-edit-]

So soll es funktionieren

Code:
import java.io.*;

public class Schuldentilgung
{
  double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen,
         restschuld, zinssumme = 0, abtrag, rueckzahlsumme;

  public static void main (String[] args)
  {
    zinssatz = 10;
  }
}

Aber beim Zugriff auf Zinssatz meckert er mir dann

Code:
non-static variable zinssatz cannot be referenced from a static context

[/-edit-]
 

Sky

Top Contributor
Ich würde Dir empfehlen pack die Variablen, die 'überall' verfügbar sein sollen entweder in die System-Properties oder in ein Interface (m.E. die bessere Alternative)
 

Sky

Top Contributor
Zuerst definierst Du das Interface:
Code:
interface myConst {
 public String string = "string";
 public int i = -1;
}

und nun kannst darauf zugreifen, wenn das Interface importiert wird mittels:
Code:
String s = myConst.string;
int i = myConst.i;

Wenn Du Java 5.0 benutzt, dann guck Dir zusätzlich mal das Konzept der 'static imports' an.
 

Sky

Top Contributor
Ok, nachdem Du deinen Code oben eingefügt hast, ist das Problem klar! So sollte es gehen:

Code:
import java.io.*; 

public class Schuldentilgung { 
  double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen, 
         restschuld, zinssumme = 0, abtrag, rueckzahlsumme; 

  public Schuldentilgung {
    zinssatz = 10; 
  }

  public static void main (String[] args) { 
    new Schuldentilgung();
  } 
}
 
D

Destiny1985

Gast
Ok, mein Code sieht aus wie folgt

Code:
import java.io.*;

interface myConst
{
   public int i = -1;
}

public class Schuldentilgung
{
    int i = myConst.i;

  public static void main (String[] args)
  {
     System.out.println(i);
  }

}

was mache ich falsch ? Fehlermeldung bleibt dieselbe wie oben bereits gepostet...

mfg
 

Sky

Top Contributor
Siehe mein Post oben! Das hat nichts mit global oder nicht global zu tun! Du versucht in einer statischen Methode (main) auf nicht-statische Eigenschaften der Klasse Schuldentilgung zuzugreifen. Das geht aber nicht!
 
D

Destiny1985

Gast
sky80 hat gesagt.:
Code:
import java.io.*; 

public class Schuldentilgung { 
  double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen, 
         restschuld, zinssumme = 0, abtrag, rueckzahlsumme; 

  public Schuldentilgung {
    zinssatz = 10; 
  }

  public static void main (String[] args) { 
    new Schuldentilgung();
  } 
}

Wenn ich den Code compiliere sagt er mir bei

Code:
public Schuldentilgung -> <identifier> expected

Und in Zeile 26 sagt er mir das ihm ein ; fehlt (lol wo denn da, in Zeile 26 steht nämlich nur ein })
 

Sky

Top Contributor
Hatte den Code nicht getestet... und im Eifer des Gefechtes die Klammern beim Konstruktor vergessen!

Es muss heißen:
Code:
public Schuldentilgung() {
 
S

stev.glasow

Gast
"""public Schuldentilgung { """
zu """public Schuldentilgung() { "" ändern.

Und schau dir mal an was static bedeutet.
 
D

Destiny1985

Gast
Naja ok funktioniert jetzt, aber wenn ich mir jetzt ein Programm baue mit 10 Variablen, die sich während der Laufzeit mehrmals ändern, dann kann man das doch so nicht realisieren oder ? Wäre ja dann ein riesiger Umfang ? oder steige ich immer noch nicht durch ;)
 

Sky

Top Contributor
Ich verstehe dein Problem nicht! Warum kannst du nicht 10 Variablen zur Laufzeit ändern??

Code:
Var1 = xxx;
Var2 = xyz;

Wo ist denn da der riesige Umfang????? Wenn Du 10 Werte ändern willst so mußt Du dafür 10 Anweisugen schreiben!
 
D

Destiny1985

Gast
Ich gehe erstmal was essen, dann schau ich mir das nochmal an ;) Bin gerade etwas angeschlagen :p

danke für die hilfe

mfg
 
B

bygones

Gast
Ein Interface als Konstanten - Bank... AUTSCH !!!

Ist nicht der Sinn und Zweck eines Interfaces.... Big NO NO
 

Sky

Top Contributor
deathbyaclown hat gesagt.:
Ein Interface als Konstanten - Bank... AUTSCH !!!

Ist nicht der Sinn und Zweck eines Interfaces.... Big NO NO
Was ist daran "NO NO". Das ist gängige Praxis... guck Dir doch mal die Klasse (oder besser das Interface!) SwingConstants an.
 
S

stev.glasow

Gast
Bei Konstanten ist es ja auch ok, aber hier nicht.
Im Normalfal sind doch nicht konstante, globale Variable schied - und wenn sie nicht private sind so wieso. Meine Meinung.
[edit]

deathbyaclown hat gesagt.:
Ein Interface als Konstanten - Bank... AUTSCH !!!
Ist nicht der Sinn und Zweck eines Interfaces.... Big NO NO
Achso - ops, es ging ja um Konstanten :autsch: *verpeiltGuck

Also Konstanten im Interface finde ich auch ok.

[edit]
Ich bins noch mal - bin etwas verpeilt heute früh. Das muss ich aber noch los werden :)

Code:
interface myConst {
 public String string = "string";
 public int i = -1;
}
Konstanten macht man final und unter globale Variable verstehe ich eine öffentlich statische.
 

Sky

Top Contributor
stevg hat gesagt.:
und 'static' :meld:
Warum müssen die auch static sein??

Der Zugriff ist doch bei beiden möglich:
Code:
interface myConst {
  public final        String string1 = "string1";
  public final static String string2 = "string2";
}
egal, ob ich in einer statischen oder nicht-statischen Methode bin...
 

AlArenal

Top Contributor
static weil:
Wenn du das Interface mal implementierst sparste Ressourcen, weil die Instanzen der Klasse nicht jeder ihre eigenen Konstanten mitschleppen, obwohl diese für jede Instanz gleich sind..
 

Sky

Top Contributor
AlArenal hat gesagt.:
static weil:
Wenn du das Interface mal implementierst sparste Ressourcen, weil die Instanzen der Klasse nicht jeder ihre eigenen Konstanten mitschleppen, obwohl diese für jede Instanz gleich sind..
Ok... ich hatte bisher immer auf ein 'implements' verzichtet und per INTERFACE.VAR darauf zugegriffen... klingt aber so äußerst logisch.
 
S

stev.glasow

Gast
sky80 hat gesagt.:
stevg hat gesagt.:
und 'static' :meld:
Warum müssen die auch static sein??

Der Zugriff ist doch bei beiden möglich:
Code:
interface myConst {
  public final        String string1 = "string1";
  public final static String string2 = "string2";
}
egal, ob ich in einer statischen oder nicht-statischen Methode bin...

Das wusse ich nicht, bisschen ihh sieht es aber aus.
 
D

Destiny1985

Gast
Ich komm mit Interfaces mal gar nicht klar...verstehe den ganzen Ansatz irgendwie nicht...habe jetzt den Code

Code:
import java.io.*;

public class Schuldentilgung
{
  double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen,
         restschuld, zinssumme = 0, abtrag, rueckzahlsumme;

  public Schuldentilgung()
  {
    zinssatz = 10;
  }

  public static void main (String[] args)
  {
    new Schuldentilgung();
  }
}

Die zuweisung zinssatz = 10; scheint zu klappen, aber sobald ich in main eine Zeile einfüge

Code:
System.out.println(zinssatz);

meckert er sofort wieder "non-static variable zinssatz cannot be referenced from a static context"

Ist das schon OO oder wieso kenne ich das alles noch nicht ? Sowas kam bisher nirgends dran, daher bin ich auch relativ ratlos !

Was bringt mir der Aufruf von new Schuldentilgung(); (und wieso new). und wieso muss ich das aufrufen, das ding ändert doch nur den wert von zinssatz...wie mache ich es, wenn der benutzer den wert eingeben soll ? Und wieso komme ich im main nicht an den wert ran ?`muss ich da immer alles hin und her übergeben ? und was zum teufel hat es mit dem static auf sich :/

fragen über fragen....
 
B

bygones

Gast
Interface sind Schnittstellen. Sie definieren ein Verhalten einer Klasse sodass unabhängig von ihrer Implementierungen andere Klassen die Schnittstelle nutzen können.

Eine reine Konstantenbank als Interface widerspricht dem Sinn und Zweck eines Interfaces ! Klar hat Sun die SwingConstants als Interface definiert, aber Falsches macht das noch nicht Richtig.

Aus meiner Sicht ist das einfach "Missbrauch". Und dann noch per implements - da sträuben sich mir alle Java Haare am Körper.

Nein - für mich ist das Pfui und ich will auch sowas in Programmen nicht sehen.

Für Konstanten
1. Properties datei
2. final class von mir aus auch
 

AlArenal

Top Contributor
Wo er Recht hat, hat er Recht. Stilistisch ist es natürlich schweres Pfui ein Interface alleine für Konstanten zu verwenden.
 
S

stev.glasow

Gast
Und was sagt ihr zu sachen wie javax.swing.Action.
Ich bin auch der Meinung, dass man sich auch welche in nicht final Klassen halten kann. Ist doch auch Gang und Gebe.
Oder reden wir an einander vorbei? Ich reden von static Konstanten allgemein nicht nur von irgendwelchem Propertyzeugs.
 

Sky

Top Contributor
stevg hat gesagt.:
Und was sagt ihr zu sachen wie javax.swing.Action.
Ich bin auch der Meinung, dass man sich auch welche in nicht final Klassen halten kann. Ist doch auch Gang und Gebe.
Oder reden wir an einander vorbei? Ich reden von static Konstanten allgemein nicht nur von irgendwelchem Propertyzeugs.
Action ist doch auch ein Interface, wenn ich nicht irre!?

Außerdem: Hier wird das Wort 'interface' immer als 'Schnittstelle' übersetzt. Das ist aber eine unvollständige Übersetzung. Ein 'interface' kapselt nämlich die Gemeinsamkeiten zwischen Klassen, die keine Beziehungen zu einander haben. Und somit gehören dazu IMHO auch Konstanten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vererbung/Globale Variablen Java Basics - Anfänger-Themen 8
D globale Variablen zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
G Globale Variablen Java Basics - Anfänger-Themen 9
G Globale Variablen Java Basics - Anfänger-Themen 3
O globale variablen Java Basics - Anfänger-Themen 21
M Globale Variablen werden durch KeyListener nicht aktualisier Java Basics - Anfänger-Themen 10
F Globale Variablen wie in C++? Java Basics - Anfänger-Themen 5
J "Globale Variablen" Java Basics - Anfänger-Themen 26
S globale Variablen Java Basics - Anfänger-Themen 9
J Globale Variablen Java Basics - Anfänger-Themen 3
C Globale Variablen und Array mit verschiedenen Typen Java Basics - Anfänger-Themen 3
S globale Variablen Java Basics - Anfänger-Themen 7
P Globale Objekte Java Basics - Anfänger-Themen 2
T Globale Variable mehrmals verwenden Java Basics - Anfänger-Themen 7
Traxter Globale Variable ? Java Basics - Anfänger-Themen 11
Jackii Globale Variable aus anderer Klasse ändern... Java Basics - Anfänger-Themen 4
M Variablen Globale Variable? Java Basics - Anfänger-Themen 4
Luk10 Globale (semi-finale) Varibalen Java Basics - Anfänger-Themen 9
U Globale Proxy Einstellungen ändern Java Basics - Anfänger-Themen 3
B Globale vector? Java Basics - Anfänger-Themen 7
C lokale Variable verwenden statt globale Java Basics - Anfänger-Themen 7
B Methoden Globale Methoden "Toolbox" Java Basics - Anfänger-Themen 3
S globale Variable deklarieren Java Basics - Anfänger-Themen 10
E Globale int Variable? Java Basics - Anfänger-Themen 6
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
T Globale Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
T Globale Variable (Font) Java Basics - Anfänger-Themen 21
G Müssen globale Funktionen immer "static" sein? Java Basics - Anfänger-Themen 13
A Globale Variable änderbar Java Basics - Anfänger-Themen 3
A Globale Methode ohne imports und übergeben? Java Basics - Anfänger-Themen 2
P textfarbe,textgröße, textart als globale einstellung Java Basics - Anfänger-Themen 7
D Globale Klassenvariablen. Java Basics - Anfänger-Themen 12
P Globale und ständige Überwachung eines Textfeldes auf text? Java Basics - Anfänger-Themen 40
M Superglobale globale Variable? Java Basics - Anfänger-Themen 10
P Globale Variable Java Basics - Anfänger-Themen 3
J "globale" variable definieren? Java Basics - Anfänger-Themen 7
S Globale Variable / Methode Java Basics - Anfänger-Themen 5
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben