Inhaltsverzeichnis

  • Variablen in Java

    • Motivation

    • Wo liegt das Problem?

    • Typisierte Variablen

      • Ganzzahlen (Integer)

      • Kommazahlen

      • Weitere Typen


Möglich in Javascript

== Möglich in Javascript

Variablen in Java

Motivation

In einigen Programmiersprachen, wie beispielsweise in Javascript, kann man einer Variablen ohne Fehlermeldung beliebige Typen von Werten zuweisen.

Zum Beispiel ist der folgende Code in Javascript ohne Fehlermeldung problemlos möglich:

== Variablen in Java === Motivation In einigen Programmiersprachen, wie beispielsweise in Javascript, kann man einer Variablen ohne Fehlermeldung beliebige _Typen_ von Werten zuweisen. Zum Beispiel ist der folgende Code in Javascript ohne Fehlermeldung problemlos möglich:
var hoehe=2;
hoehe="2 cm";
JavaScript
[source, JavaScript] ---- var hoehe=2; hoehe="2 cm"; ----

Der folgende Code ist ein Problem. Wieso?

Der folgende Code ist ein Problem. Wieso?

In der ersten Zeile wird der Variablen namens hoehe der Wert 2 zugewiesen, also eine Zahl.

In der nächsten Zeile wird der gleichen Variable die Zeichenkette 2 cm zugewiesen.

In der ersten Zeile wird der Variablen namens `hoehe` der Wert 2 zugewiesen, also eine Zahl. In der nächsten Zeile wird der gleichen Variable die Zeichenkette `2 cm` zugewiesen.

Wo liegt das Problem?

Auf den ersten Blick erscheint das einfach und praktisch.

Was aber, wenn diese beiden Zeilen nicht direkt hintereinander im Code stehen, sondern beispielsweise 200 Zeilen voneinander entfernt sind? Weiter unten im Programm möchte man etwas mit der Höhe berechnen und schaut oben im Code nach, in welcher Variable der Wert gespeichert war. So könnte man beispielsweise die Höhe halbieren wollen und berechnet

=== Wo liegt das Problem? Auf den ersten Blick erscheint das einfach und praktisch. Was aber, wenn diese beiden Zeilen nicht direkt hintereinander im Code stehen, sondern beispielsweise 200 Zeilen voneinander entfernt sind? Weiter unten im Programm möchte man etwas mit der Höhe berechnen und schaut oben im Code nach, in welcher Variable der Wert gespeichert war. So könnte man beispielsweise die Höhe halbieren wollen und berechnet
hoehe=hoehe/2;
JavaScript
[source,javascript] ---- hoehe=hoehe/2; ----

Wie funktioniert das mit Java?

== Wie funktioniert das mit Java?

In diesem Fall wird sich das Javascript-Programm nach dem Starten nicht so verhalten wie gewünscht. Nicht mal eine Fehlermeldung wird ausgegeben!

Ein solcher Fehler ist nur schwer zu finden. Wie kann man es vermeiden, dass in eine Variable, die Zahlen speichern soll, Text geschrieben wird? Das muss besser gehen, aber wie?

In diesem Fall wird sich das Javascript-Programm nach dem Starten nicht so verhalten wie gewünscht. Nicht mal eine Fehlermeldung wird ausgegeben! Ein solcher Fehler ist nur schwer zu finden. Wie kann man es vermeiden, dass in eine Variable, die Zahlen speichern soll, Text geschrieben wird? Das muss besser gehen, aber wie?

Typisierte Variablen

In Java muss man beim ersten Erstellen einer Variablen immer auch den Typ einer Variable festlegen.

Um eine Variable namens hoehe einzuführen, die nur ganze Zahlen speichern darf (auf englisch eine "integer"-Zahl), so geschieht dies durch

=== Typisierte Variablen In Java muss man beim ersten Erstellen einer Variablen immer auch den _Typ_ einer Variable festlegen. Um eine Variable namens `hoehe` einzuführen, die nur ganze Zahlen speichern darf (auf englisch eine "integer"-Zahl), so geschieht dies durch
int hoehe=2;
Java
[source,java] ---- int hoehe=2; ----

int ist der Typ der Variable und hoehe der Name.

`int` ist der _Typ_ der Variable und `hoehe` der _Name_.

Versucht man nun, wie im Beispiel mit Javascript, einen Text in dieser Variablen zu speichern, so könnte man wieder schreiben

Versucht man nun, wie im Beispiel mit Javascript, einen Text in dieser Variablen zu speichern, so könnte man wieder schreiben
hoehe="2 cm";
Java
[source,java] ---- hoehe="2 cm"; ----

Das gibt schon einen Fehler vor dem Start des Programms!

Einer Variablen, die nur ganze Zahlen speichern soll, darf kein Text zugewiesen werden.

Das gibt schon einen Fehler *vor dem Start* des Programms! Einer Variablen, die nur ganze Zahlen speichern soll, darf kein Text zugewiesen werden.

Ganzzahlen

Typ Beispiel Bytes Bits

byte

byte b=23;

1

8

short

short s=32767;

2

16

int

int hoehe=125234523;

4

32

long

long m=208357209348;

8

64

==== Ganzzahlen |=== |Typ|Beispiel|Bytes|Bits |byte|`byte b=23;`|1|8 |short|`short s=32767;`|2|16 |int|`int hoehe=125234523;`|4|32 |long|`long m=208357209348;`|8|64 |===

und erhält schon beim Compilieren, also vor dem Starten des Programms, eine entsprechende Fehlermeldung. In einer Entwicklungsumgebung wie Netbeans wird dieser Fehler schon während des Schreibens im Editor angezeigt. Sehr praktisch!

und erhält schon beim Compilieren, also vor dem Starten des Programms, eine entsprechende Fehlermeldung. In einer Entwicklungsumgebung wie Netbeans wird dieser Fehler schon während des Schreibens im Editor angezeigt. Sehr praktisch!

Welche Typen von Variablen gibt es in Java?

=== Welche Typen von Variablen gibt es in Java?

Ganzzahlen (Integer)

Typ Beispiel Minimal Maximal Bytes Bits

byte

byte b=23;

-128

+127

1

8

short

short s=32767;

-32768

+32767

2

16

int

int hoehe=2;

-2147483648

+2147483647

4

32

long

long milis=2083572098432234;

-9223372036854775808

+9223372036854775807

8

64

==== Ganzzahlen (Integer) |=== |Typ|Beispiel|Minimal|Maximal|Bytes|Bits |byte|`byte b=23;`|-128|+127|1|8 |short|`short s=32767;`|-32768|+32767|2|16 |int|`int hoehe=2;`|-2147483648|+2147483647|4|32 |long|`long milis=2083572098432234;`|-9223372036854775808|+9223372036854775807|8|64 |===

Kommazahlen

Typ Beispiel Bytes Bits

float

float f=2.3f;

4

32

double

double d=2.3;

8

64

==== Kommazahlen |=== |Typ|Beispiel|Bytes|Bits |float|`float f=2.3f;`|4|32 |double|`double d=2.3;`|8|64 |===

Der Unterschied zwischen den beiden Typen liegt in der Genauigkeit, also wie weit zwei benachbarte Zahlen voneinander entfernt sind, und der größten bzw. kleinsten Zahl, die jeweils gespeichert werden kann.

Üblicherweise verwendet man für Kommazahlen den Typ double, da dieser auch von modernen Prozessoren direkt unterstützt wird.

Mehr Informationen zu den minimalen und maximalen Werten dieser Variablentypen findet man für float hier und für double hier.

Der Unterschied zwischen den beiden Typen liegt in der Genauigkeit, also wie weit zwei benachbarte Zahlen voneinander entfernt sind, und der größten bzw. kleinsten Zahl, die jeweils gespeichert werden kann. [NOTE] ==== Üblicherweise verwendet man für Kommazahlen den Typ `double`, da dieser auch von modernen Prozessoren direkt unterstützt wird. ==== Mehr Informationen zu den minimalen und maximalen Werten dieser Variablentypen findet man für `float` http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html[hier] und für `double` http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html[hier].

Weitere Typen

Typ Beispiel Beschreibung

String

String t="Hallo";

Zeichenketten

boolean

boolean b=true;

Wahrheitswerte true oder false

char

char c='a';

Einzelnes Unicode-Zeichen (Buchstabe)

==== Weitere Typen |=== |Typ|Beispiel|Beschreibung |String|`String t="Hallo";`|Zeichenketten |boolean|`boolean b=true;`|Wahrheitswerte `true` oder `false` |char|`char c='a';`|Einzelnes Unicode-Zeichen (Buchstabe) |===