Variablen

In Java – ähnlich wie in C, C++ oder C# – besitzt jede Variable einen Datentyp, der festlegt, welche Art von Wert gespeichert werden kann. Bevor eine Variable verwendet wird, muss sie deklariert werden, also mit einem Typ und einem Namen bekannt gemacht werden.

Java stellt eine Reihe von eingebauten, sogenannten primitiven Datentypen bereit. Diese sind besonders effizient und decken die grundlegenden Wertebereiche ab:

  • int – Ganzzahl (32 Bit, positiv oder negativ)
  • long – Ganzzahl mit doppelter int-Größe (64 Bit)
  • short – Ganzzahl mit halber int-Größe (16 Bit)
  • byte – Ganzzahl mit 8 Bit
  • float – Fließkommazahl nach IEEE-Standard (32 Bit: 1 Bit Vorzeichen, 8 Bit Exponent, 23 Bit Mantisse)
  • double – Fließkommazahl mit doppelter float-Größe (64 Bit)
  • char – Einzelnes Zeichen wie 'a', ' ', '$' oder '%' (16 Bit, Unicode)
  • boolean – Wahrheitswert (true oder false)

 

💡Beachte: das zusammenfassen von mehreren Variablen in Arrays wird in einem anderen Artikel erklärt.

 

Numerische Datentypen

In Java gibt es verschiedene numerische Datentypen, die sich in der Größe des reservierten Speichers und im darstellbaren Zahlenbereich unterscheiden. Sie existieren, um Speicher effizient zu nutzen und je nach Anwendungsfall die passende Genauigkeit und Reichweite zu bieten.

byte

Speichergröße: 8 Bit = 1 Byte

Wertebereich: −128 bis +127

Verwendung:

  • Ideal für kleine Ganzzahlen, z.  Zähler, Flags oder Datenströme.
  • Wird oft in Arrays verwendet, um Speicher zu sparen (z. B. bei großen Datenmengen oder binären Dateien).

Warum existiert dieser Typ?

  • Um Speicher zu optimieren, wenn nur sehr kleine Werte benötigt werden.

short

Speichergröße: 16 Bit = 2 Byte

Wertebereich: −32 768 bis +32 767

Verwendung:

  • Für Ganzzahlen, die größer als byte, aber kleiner als int sind.
  • Wird heute seltener genutzt, da Speicherplatz weniger kritisch ist.

Warum existiert dieser Typ?

  • Früher wichtig für Systeme mit wenig Speicher, heute noch nützlich in speziellen Anwendungen (z. B. eingebettete Systeme).

Int (integer)

Speichergröße: 32 Bit = 4 Byte

Wertebereich: −2 147 483 648 bis +2 147 483 647

Verwendung:

  • Standard-Datentyp für Ganzzahlen in Java.
  • Wird in Schleifen, Berechnungen und fast allen Programmen verwendet.

Warum existiert dieser Typ?

  • Bietet einen guten Kompromiss zwischen Speicherbedarf und Zahlenbereich.

long

Speichergröße: 64 Bit = 8 Byte

Wertebereich: −9 223 372 036 854 775 808 bis +9 223 372 036 854 775 807

Verwendung:

  • Für sehr große Ganzzahlen, z. B. bei Zeitstempeln (System.currentTimeMillis()), IDs oder Finanzberechnungen.

Warum existiert dieser Typ?

  • Um Zahlenbereiche abzudecken, die über den int-Rahmen hinausgehen.

float

Speichergröße: 32 Bit = 4 Byte

Wertebereich: ca. ±3.4 × 10^38 (7 Nachkommastellen Genauigkeit)

Verwendung:

  • Für Gleitkommazahlen mit begrenzter Genauigkeit.
  • Typisch in Grafikberechnungen, Simulationen oder Spielen, wo Geschwindigkeit wichtiger ist als absolute Genauigkeit.

Warum existiert dieser Typ?

  • Spart Speicher und Rechenzeit im Vergleich zu double.

double

Speichergröße: 64 Bit = 8 Byte

Wertebereich: ca. ±1.7 × 10^308 (15–16 Nachkommastellen Genauigkeit)

Verwendung:

  • Standard-Datentyp für Fließkommazahlen in Java.
  • Wird in wissenschaftlichen Berechnungen, Finanzmodellen und überall dort genutzt, wo Genauigkeit entscheidend ist.

Warum existiert dieser Typ?

  • Liefert die nötige Präzision für komplexe mathematische Berechnungen.

📌 Zusammenfassung in einer Tabelle

Datentyp   

Speicher   

Wertebereich

Typische Verwendung

byte

8 Bit (1 B)

−128 bis +127

Kleine Ganzzahlen, Datenströme

short

16 Bit (2 B)

−32 768 bis +32 767

Eingebettete Systeme, Speicheroptimierung

int

32 Bit (4 B)

−2,1 Mrd. bis +2,1 Mrd.

Standard-Ganzzahltyp

long

64 Bit (8 B)

±9,22 Trillionen

Zeitstempel, IDs, große Zahlen

float

32 Bit (4 B)

±3.4 × 10^38 (7 Stellen)

Grafik, Spiele, schnelle Berechnungen

double

64 Bit (8 B)  

±1.7 × 10^308 (15–16 Stellen)   

Wissenschaft, Finanzen, Standard für Gleitkommazahlen

 

Nicht-numerische Datentypen

Neben den numerischen Datentypen stellt Java auch nicht-numerische Datentypen bereit. Diese dienen nicht der Darstellung von Zahlenwerten, sondern der Abbildung von logischen Zuständen, Zeichen oder komplexeren Strukturen. Sie sind unverzichtbar, um Programme nicht nur rechnen, sondern auch entscheiden, steuern und mit Texten arbeiten zu lassen.

Boolean

Speichergröße:

  • In der Java-Spezifikation ist nur festgelegt, dass ein boolean zwei Werte annehmen kann: true oder false.
  • Die exakte Speichergröße ist nicht standardisiert. In der Praxis wird er oft als 1 Byte (8 Bit) im Speicher abgelegt, da Prozessoren in Byte-Einheiten adressieren.
  • In Arrays kann die JVM intern Optimierungen vornehmen (z. B. Bit-Packing).

Wertebereich:

Nur zwei mögliche Zustände:

  • true (wahr)
  • false (falsch)

Verwendung:

  • Steuerung von Bedingungen in if-Abfragen, while-Schleifen oder for-Schleifen.
  • Darstellung von logischen Zuständen (z. B. „ist angemeldet?“, „ist leer?“, „hat Zugriff?“).
  • Grundlage für Vergleichsoperationen (==, <, >, etc.), die immer ein boolean zurückgeben.

Warum existiert dieser Typ?

  • Um logische Entscheidungen im Programm abzubilden.
  • Ohne boolean müsste man Zustände über Ganzzahlen (0/1) darstellen, was unübersichtlicher und fehleranfälliger wäre.

Char (Character / Zeichen)

Speichergröße:

  • 16 Bit = 2 Byte
  • In Java ist char immer 16 Bit groß, da er auf dem Unicode-Standard basiert.
  • Damit können nicht nur ASCII-Zeichen (0–127), sondern auch internationale Schriftzeichen, Symbole und Sonderzeichen dargestellt werden.

Wertebereich:

  • Von \u0000 (0) bis \uffff (65 535)
  • Enthält alle Unicode-Zeichen, also Buchstaben, Ziffern, Satzzeichen, Symbole und sogar Emojis.

Verwendung:

  • Speicherung einzelner Zeichen, z. B. 'A', '7', '?'.
  • Grundlage für die Arbeit mit Strings, da ein String intern eine Sequenz von char-Werten ist.
  • Nützlich für Zeichenoperationen, z. B. beim Parsen von Textdateien oder beim Arbeiten mit Protokollen.

Warum existiert dieser Typ?

  • Um einzelne Zeichen unabhängig von Zahlenwerten darzustellen.
  • Durch Unicode-Unterstützung ist Java von Anfang an internationalisiert – Programme können mit fast allen Sprachen und Symbolen arbeiten.

💡Hinweis: Um ein einzelnes Zeichen zu übergeben muss dieses in ‘  ‘ (Hochkommata) gestellt werden. Alternativ kann der Unicode-Wert mit \u übergeben werden. Dies gilt auch für Emoji.

 

Sonderfall: String

Neben den einfachen Datentypen gibt es in Java auch den Datentyp String zur Darstellung von Zeichenketten.
Strings nehmen eine Sonderrolle ein: Sie sind zwar fester Bestandteil der Sprache, gehören aber nicht zu den einfachen Datentypen. Stattdessen handelt es sich um eine Klasse, die zahlreiche Methoden bereitstellt wie etwa zum Vergleichen, Durchsuchen oder Bearbeiten von Texten.

 

Deklaration

In Java ist es notwendig, Variablen vor ihrer Verwendung zu deklarieren, weil die Sprache statisch typisiert ist. Das bedeutet: Der Compiler muss bereits beim Übersetzen des Programms wissen, welchen Datentyp eine Variable hat (z. B. int, double, String). Nur so kann er prüfen, ob Operationen korrekt sind und ob Speicherplatz richtig reserviert wird.

💡Merke: Bei der Deklaration werden der Datentyp und Bezeichner bekanntgegeben.

 

Zahlendarstellung

Computer arbeiten intern mit dem Binärsystem, doch für Programmierer ist es oft hilfreich, Zahlen auch in anderen Zahlensystemen darzustellen – etwa im Oktal- oder Hexadezimalsystem. Damit der Compiler oder Interpreter erkennt, in welchem Zahlensystem eine Zahl notiert ist, werden Präfixe verwendet.

Gängige Schreibweisen:

  • Dezimal (Basis 10)
    • Standarddarstellung ohne Präfix.
    • Beispiel: 42 entspricht der Zahl 42 im Dezimalsystem.
  • Oktal (Basis 8)
    • Eingeleitet durch eine führende 0.
    • Beispiel: 052 entspricht der Dezimalzahl 42.
    • Hinweis: In modernen Sprachen wie Java ist Oktalschreibweise eher selten, aber noch unterstützt.
  • Hexadezimal (Basis 16)
    • Eingeleitet durch 0x oder 0X.
    • Beispiel: 0x2A entspricht der Dezimalzahl 42.
    • Hexadezimal wird häufig für Speicheradressen oder Farbwerte genutzt.
  • Binär (Basis 2)
    • Eingeleitet durch 0b oder 0B.
    • Beispiel: 0b101010 entspricht der Dezimalzahl 42.
    • Praktisch, um Bitmuster oder Flags darzustellen.

 

Zahlensystem    

Präfix    

Beispiel    

Wert in Dezimal

Dezimal

42

42

Oktal

0

052

42

Hexadezimal

0x

0x2A

42

Binär

0b

0b101010

42

 

Beispiel

01 TextMitFarbeProgramm zum Ausgeben mehrerer Variablen. Quelle: Technik-Kiste.de

1. Klassendefinition

public class BeispielVariablen {

  • In Java muss jedes Programm in einer Klasse stehen.
  • Der Klassenname lautet hier BeispielVariablen.
  • public bedeutet, dass die Klasse von überall aus zugreifbar ist.

 

2. Die main-Methode

public static void main (String args []){

  • Dies ist der Einstiegspunkt des Programms.
  • Ohne diese Methode würde das Programm nicht starten.
  • String args[] erlaubt es, Startparameter von außen an das Programm zu übergeben (hier aber ungenutzt).

 

3. Variablen und Konstanten

int age = 24;

  • int ist ein Ganzzahl-Datentyp (32 Bit).
  • Die Variable age speichert den Wert 24.

final int birth = 1995;

  • final bedeutet: Konstante – der Wert kann nach der Zuweisung nicht mehr verändert werden.
  • birth speichert das Geburtsjahr 1995.

String name = "Nathan Tristan";

  • String ist ein Objekttyp für Zeichenketten.
  • Die Variable name enthält den Text "Nathan Tristan".

 

4. Ausgabe auf der Konsole

System.out.println("Name: " + name + " | Age: " + age + " | Birth: " + birth);

  • System.out.println gibt Text auf der Konsole aus.
  • Mit dem Plus-Operator (+) werden Zeichenketten und Variablen aneinandergehängt (String-Konkatenation).
  • Ergebnis der Ausgabe:

Name: Nathan Tristan | Age: 24 | Birth: 1995

 

Gültigkeitsbereiche von Variablen

Wie in C oder C++ spielt auch in Java der Ort der Deklaration einer Variablen eine entscheidende Rolle. Es ist möglich, dass mehrere Variablen mit demselben Namen existieren – allerdings jeweils in unterschiedlichen Gültigkeitsbereichen.

Ein Gültigkeitsbereich (Scope) ist im Wesentlichen ein Abschnitt des Programms, der durch geschweifte Klammern { ... } begrenzt wird. Dazu zählen auch die Parameter einer Methode.

  • Globale Variablen: Wird eine Variable außerhalb einer Methode mit dem Schlüsselwort static deklariert, ist sie innerhalb der gesamten Klasse sichtbar. Man spricht hier von einer globalen Variablen.
  • Lokale Variablen: Variablen, die innerhalb einer Methode oder eines Blocks definiert werden, sind nur in diesem Bereich gültig. Außerhalb des jeweiligen Blocks sind sie nicht mehr zugreifbar.

💡Hinweis: Statische, global deklarierte Variablen einer Klasse werden auch als Klassenvariablen bezeichnet.

 

Beispiel

02 GlobalLokalProgramm das aus der Ausgabe einer globalen und einer lokalen Variable gleichen Namens besteht. Quelle: Technik-Kiste.de

Beim ersten println in der main-Methode wird ausschließlich auf die globale Variable x zugegriffen. Anschließend wird jedoch innerhalb der Methode eine neue, gleichnamige lokale Variable deklariert. Das zweite println gibt daher den Wert dieser lokalen Variable aus. Sie überdeckt (überschattet) die globale Variable mit demselben Namen.

 

Typinterferenz

Seit Java 10 ist es in bestimmten Fällen möglich, den Datentyp bei der Variablendeklaration wegzulassen. Der Compiler erkennt den Typ automatisch anhand des zugewiesenen Werts. Anstelle einer expliziten Typangabe wird dabei das Schlüsselwort var verwendet.

Die automatische Typinferenz mit var funktioniert nicht in allen Situationen. Wichtig ist, dass einer Variablen bereits bei der Deklaration ein Wert zugewiesen wird, damit der Compiler den Typ ableiten kann. Während also folgende Schreibweise gültig ist:

int x;

x = 24;

führt die gleiche Vorgehensweise mit var zu einem Compilerfehler:

var x;

x = 24;

Ähnlich wie C, C++ oder C# setzt auch Java auf statische Typisierung. Das bedeutet: Der Datentyp einer Variablen wird bereits zur Kompilierzeit festgelegt und bleibt anschließend unveränderlich. In dynamisch typisierten Sprachen wie Python oder JavaScript ist das anders. Dort kann sich der Typ einer Variablen auch nachträglich während der Programmausführung ändern.

 


 

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.

Image

Umfrage

📢 Deine Meinung zählt!

Wir überlegen, einen Technik‑Kiste Newsletter zu starten – mit spannenden Technik‑Tipps, exklusiven Artikeln und Updates direkt in dein Postfach.

Damit wir genau das liefern, was dich interessiert, brauchen wir dein Feedback:

👉 Sag uns in unserer kurzen Umfrage, ob du dir so einen Newsletter wünschst und welche Inhalte dir am wichtigsten sind.

Deine Vorteile:

  • Mitreden, wie der Newsletter gestaltet wird
  • Exklusive Infos vor allen anderen
  • Keine Werbung, nur relevanter Technik‑Content

Jetzt mitmachen – es dauert nur 1 Minute!