wiki:Skript/2. Java/ 1. Einführung

Version 7 (modified by tr, 8 years ago) (diff)

--

Datentyp

In Java gibt es verschiedene Arten eingebauter Datentypen. Die Datentypen für Ganzzahlen, Fließkommazahlen, Unicode-Zeichen und Wahrheitswerte sind sog. primitive Datentypen.

Ganzzahlen

  • byte - ganze Zahlen -128 ... 127
  • short - ganze Zahlen -32.768 ... 32.767
  • int - ganze Zahlen -2.147.483.648 ... 2.147.483.647
  • long - ganze Zahlen ~ (-9 *1018 ... 9 *1018)

Fließkommazahlen

  • float - Gleitkommazahlen -3.40282347 *1038 ... 3.40282347 *1038
  • double - Gleitkommazahlen -1.79769313486231570 *10308 ... 1.79769313486231570 *10308

Unicode-Zeichen

Wahrheitswerte

  • boolean - true / false

Zeichenketten

  • String - Beispiel: "Hallo Welt"

Ein String gehört zu den primitiven Datentypen, wird aber in Java nicht als solcher behandelt.
Zeichenketten können verkettet und auf gleiche oder verschiedene Instanz überprüft werden.

Verkettung

String vorname = "Peter";
String nachname = "Meier";
String name1 = vorname + " " + nachname;
String name2 = "Peter " + "Meier";
Vergleichsoperatoren
== Prüfung auf gleiche Instanz
!= Prüfung auf verschiedene Instanz

Bei der Prüfung auf gleiche oder verschiedene Instanz wird verglichen, ob die Verweise (Variablennamen) auf das selbe im Speicher liegende Objekt zeigen.

Sichere Variante mit equals

String s1 = "Katrin";
String s2 = "Kathrin";
boolean gleich = s1.equals(s2);

Variable

Variable werden benötigt, um Informationen (Zahlen, Buchstaben, Zeichen, etc.) abzuspeichern und zu benutzen.
Der Name einer Variablen sollte im Kontext zu ihrer Benutzung stehen, um Irritationen zu vermeiden und der Anfangsbuchstabe klein geschrieben werden.

Deklaration

Vor der ersten Verwendung muss eine Variable bekanntgemacht werden. Dies nennt man Deklaration.

Allgemeine Form
datentyp variablenname;
int x;
int das_ist_auch_ein_name33;
String name;
char geschlecht;
int alter;
boolean volljaehrig;
String textausgabe;

Zuweisung

In Variablen lassen sich Daten speichern und um sie zu nutzen, müssen sie zuerst initialisiert werden.
Das Prinzip ist, dass wir den Ausdruck auf der rechten Seite in die Variable auf der linken Seite speichern wollen.

Allgemeine Form
variablenname = wert;
das_ist_auch_ein_name33 = 42;


Deklaration mit Zuweisung (Initialisierung)

Es kann eine Variable in einer Anweisung deklariert und einem Wert zugewiesen werden.

Allgemeine Form
datentyp variablenname = wert;
String name = "Peter";
char geschlecht = 'm';
int alter = 42;
boolean volljaehrig = true;


Weitere Möglichkeiten Variablen zu initialisieren
String name = "Name: " + "Peter";
String nichts = "";
double a,b,c,d = 0.2;
double zufallszahl = (Math.random() * 3.9) / 2;

Zurück zum Inhaltsverzeichnis


Bedingte Anweisung

Nur bei Erfüllung der Bedingung wird die Anweisung ausgeführt. So kann eine situationsabhängige Entscheidung getroffen werden.

Eine Bedingung kann entweder zu true oder zu false ausgewertet werden. Sie ist ein Boolescher Ausdruck, der selbst wieder aus Booleschen Ausdrücken und Operatoren (siehe unten) zusammengesetzt sein kann. Beispiele:

Allgemeine Formen
if (Bedingung) {
  // Anweisung;
}

Verknüpfen von Ausdrücken mit logischen Operatoren:

if (Ausdruck1 && Ausdruck2) {
  // Anweisung;
}

if (Ausdruck1 || Ausdruck2) {
  // Anweisung;
}

if ((Ausdruck1 || (Ausdruck2 && Ausdruck3)) && !Ausdruck4) {
  // Anweisung;
}
Beispiele
// Falls die Variable a negativ ist, dann wird sie mit -1 multipliziert.
if (a < 0) {
  a = a * -1;
}
// Falls beendeProzess() true zurueckgibt, dann wird auf der Konsole "Erledigt." ausgegeben.
if (beendeProzess() == true) {
  System.out.print("Erledigt.");
}
// Falls teilbar(x) true zurueckgibt und die Variable x größer als 42 ist, dann
// wird auf der Konsole die Variable x ausgegeben.
if (teilbar(x) && x > 42) {
  System.out.print(x);
}
// Falls y größer 0 und kleiner 1 ist, dann liegt es im Intervall.
if (y > 0 && y < 1) {
  System.out.print(y + " liegt im Intervall.");
}

Bedingte Anweisung mit Alternative

Falls die erste Bedingung nicht zutrifft, werden nacheinander die Alternativen überprüft. Es kann auch eine Alternative eintreten, die nicht an eine Bedingung geknüpft ist.

Allgemeine Form
if (Bedingung) {
  // Anweisung;
} else if (Bedingung) {
  // Anweisung;
} else {
  // Anweisung;
}
Beispiele
// Falls x gleich 0 ist und y ungleich 0, dann wird auf der Konsole "Fehler." ausgegeben.
// Falls aber x  größer 0 ist, wird y zu 5.
// Ansonsten wird tuWas() ausgeführt.
if (x == 0 || y != 0) {
  System.out.print("Fehler.");
} else if (x > 0) {
   y = 5;
} else {
  tuWas();
}
// Falls die Variable kontoguthaben kleiner 3451 ist, dann wird die Ueberweisung abelehnt.
// Ansonsten wird die Ueberweisung ausgeführt.
if (kontoguthaben <= 3451) {
  System.out.print("Überweisung abgelehnt.");
} else {
  System.out.print("Überweisung erfolgreich.");
}
// Falls der Wert der Variablen ueberweisung kleiner als 10 und größer als 5 ist, dann
// wird geringeGebuehren() und ueberweise() ausgefuehrt.
// Falls der Wert der Variablen ueberweisung kleiner als 10 und kleiner oder gleich 5 ist, dann
// wird hoheGebuehren() und ueberweise() ausgefuehrt.
// Ansonsten wird nur ueberweise() ausgefuehrt.
if (ueberweisung < 10) {
  if (ueberweisung > 5) {
    geringeGebuehren();
    ueberweise();
  } else {
    hoheGebuehren();
    ueberweise();
  }
} else {
  ueberweise();
}

Fallunterscheidung

Mit einer switch-case-Verzweigung können, wie bei einer if-else-Verzweigung, ein Ausdruck überprüft und entsprechende Anweisungen ausgeführt werden. Mögliche Datentypen für den Ausdruck sind int, char, String.

Allgemeine Form
switch (Ausdruck) {

// Der Ausdruck hinter dem switch jetzt nacheinander mit den hinter der Sprungmarke case aufgeführten
// Ausdrücken verglichen. Trifft nichts zu, wird alternativ default ausgeführt.

  case Ausdruck1:
    // Anweisung
    break;
  case Ausdruck2:
    // Anweisung;
    break;
   :
   :
   :
  case AusdruckN:
    // Anweisung
    break;
  default:
    // Anweisung
}

Es ist wichtig darauf zu achten, dass nach einer Anweisung ein break folgt, da sonst mehrere Fälle hintereinander ausgeführt werden können.

Beispiele
int monat = s.nextInt();
String jahreszeit = "";
switch (monat) {
  case 3:
  case 4:
  case 5:
    jahreszeit = "Frühling";
    break;
  case 6:
  case 7:
  case 8:
    jahreszeit = "Sommer";
    break;
  case 9:
  case 10:
  case 11:
    jahreszeit = "Herbst";
    break;
  case 1:
  case 2:
  case 12:
    jahreszeit = "Winter";
    break;
  default:
    jahreszeit = "Diesen Monat gibt es nicht.";
}
String eingabe = s.nextLine();
switch (eingabe) {
  case "Hallo":
    System.out.println("Guten Tag.");
    break;
  case "Tschuess":
    System.out.println("Auf Wiedersehen.");
    break;
  case "Wie geht es dir?":
    System.out.println("Gut und selbst?");
    break;
  case "Gut":
    System.out.println("Na dann.");
    break;
  default:
    System.out.println("Das verstehe ich nicht.");
}

Zurück zum Inhaltsverzeichnis


Vergleichsoperatoren

Um mindestens zwei Variablen miteinander zu vergleichen. benutzt man Vergleichsoperatoren.
Das Ergebnis eines Vergleiches ist immer vom Typ boolean.

Allgemeine Form
Operand1 Vergleichsoperator Operand2


Operator Bedeutung true false
== gleich 2 == 2 2 == 3
!= nicht gleich 3 != 2 2.01 != 2.01
< kleines als 2 < 13 5 < 1
<= kleiner oder gleich 1 <= 1 4 <= 3
> größer als 10 > 8 8 > 11
>= größer oder gleich 42 >= 42 2.99 >= 3.001

Logische Vergleichsoperatoren

In Java bedeutet

  • && und
  • || oder
A B !A A && B A || B
0 0 1 0 0
0 1 1 0 1
1 0 0 0 1
1 1 0 1 1

Zurück zum Inhaltsverzeichnis


Typcasting

Es kann vorkommen, dass ein Datentyp unpassend für eine bestimmte Situation ist. Deshalb ist es möglich, den Datentyp nachträglich zu verändern, dass sog. Typcasting.

Allgemeine Form
datentyp variablename= (neuer datentyp) ausdruck;
Beispiele
// Beim Casten von double zu int werden die Nachkommastellen abgeschnitten.
double d = 5.3;
int x = (int) d;   // x == 5
int z = 5;
double zahl = (double) z;   // zahl == 5.0

Zurück zum Inhaltsverzeichnis