Java - final static Variablen
also ich habe hier ein Java Programm vorliegen und da kommen zwei Sachen drin vor, die ich nicht verstehe bzw. nicht einordnen kann, und zwar:
- final static int intervall = 100;
- static int a = rnd.nextInt(intervall);
Was bedeutet nun das final und static im Bezug auf die Variablen und wo liegt der Unterschied zwischen nur static und final static ?
danke schonmal für eure hilfe...
3 Antworten
zu 1. Hier handelt es sich um die Definition einer Konstanten, die im weiteren Programmablauf nicht verändert werden darf. Sollte man es trotzdem versuchen, diese Konstante zu verändern, würde das Programm mit einer Fehlermeldung abgebrochen werden. Konstanten sollten immer aus Grossbuchstaben bestehen. So wie oben angegeben, handelt es sich nicht um professionale Programmierung. Es muesste heissten: final static int INTERVALL = 100;
zu 2. Die Variable wird zu einer Klassenvariablen, die nicht mit instantiiert wird, d. h. die statische Variable gehört zur Klasse und nicht zu einem konkreten Objekt! Dieses Feld gibt es genau nur einmal. Diese Variable ist veränderbar.
Hervorragende Literatur ist: Core JAVA CAY S. HORSTMANN, GARY CORNELL Band 1 - Grundlagen Verlag: ADDISON-WESLEY ISBN: 3-8273-2216-2
Wer in JAVA programmieren möchte, sollte diese Investition nicht scheuen.
static: Eine statische Variable wird pro Klasse nur einmal angelegt, sie gilt für alle Instanzen der Klasse. final: final macht die Variable zu Konstanten, ihr Wert ist damit unveränderbar.
final static erzeugt also eine instanzübergreifende Konstante
static bedeutet, dass es sich um eine Variable handelt, die sich alle Instanzen der Klasse teilen. Es gibt sie also nur einmal insgesamt und nicht einmal pro Instanz.
final bedeutet, der Inhalt der Variablen kann nach der Initialisierung nicht mehr verändert werden, es sind also keine Zuweisungen erlaubt.
static final ist mithin die Java Darstellung für eine Konstante. Vereinbarungsgemäß werden die Namen solchen Konstanten komplette groß geschrieben und Worte durch Unterstriche getrennt.