Agenda

  • Wiederholung
  • Kontrollstrukturen
  • Arrays

Wiederholung

Methoden

  • Rückgabetyp (primitiv, komplex, void)
  • Bezeichner
  • Parameter
  • Methodenrumpf

Operatoren

  • Arithmetische Operatoren (+, -, *, /, %, ++, --)
  • Vergleichsoperatoren (==, !=, etc.)
  • Logische Operatoren (&&, ||, !)
  • Bitweise Operatoren (&, |, ^, ~)

Kontrollstrukturen

Beispiele für Fallunterscheidung

  • wenn unter 16 Jahre alt, dann kein Alkohol
  • wenn weiblich, dann ist die Anrede "Frau"
  • wenn PIN falsch, dann keine Bargeldausgabe

Aufbau einer If-Anweisung

  • if Schlüsselwort
  • Bedingung
  • Code Block

Beispiel If-Anweisung

if ( Bedingung ) {
  // Quellcode
}

Demo If-Anweisung

  • wenn unter 16 Jahre alt, dann kein Alkohol
  • wenn weiblich, dann ist die Anrede "Frau"

Wie behandelt man den anderen Fall?

  • else Schlüsselwort
  • Code Block

Beispiel Else-Anweisung

else {
  // Quellcode
}

Demo If-Else-Anweisung

  • wenn unter 16 Jahre alt, dann kein Alkohol, ansonsten Alkohol
  • wenn weiblich, dann ist die Anrede "Frau", ansonsten "Mann"

Wie behandelt man weitere Fälle?

  • else if Schlüsselwort
  • Bedingung
  • Code Block

Beispiel Else-If-Anweisung

else if ( Bedingung ) {
  // Quellcode
}

else bezieht sich immer nur auf die aktuelle if-else-if-Verschachtelung

Demo If-Else-Anweisung

  • wenn unter 16 Jahre alt, dann kein Alkohol, wenn unter 18 Jahre alt, dann Bier, ansonsten jeden Alkohol
  • wenn weiblich, dann ist die Anrede "Frau", wenn männlich, dann ist die Anrede "Herr", ansonsten Vor- und Nachname

Verschachtelungen

if ( Bedingung ) {
  if ( Bedingung ) {
    if ( Bedingung ) {
      ...
    } else if ( Bedingung ) {
      ...
    } else 
      ...
    }
  }
}

Mit Verschachtelungen können jegliche Fälle abgedeckt werden.

switch

  • switch Schlüsselwort
  • Datenobjekt, das geprüft werden soll
  • Code Block
  • case Schlüsselwort mit Wert
  • Code Block
  • break Schlüsselwort

switch kann als Alternative zur If-Anweisung verwendet werden.

Beispiel Switch-Anweisung

switch ( Datenobjekt ) {
  case 1:
    // Code Block
    break;
  case 2:
    // Code Block
    break;
  default:
    // Code Block
    break;
}
switch geht nur mit int, char, String & Enum

Demo Switch-Anweisung

  • wenn unter 16 Jahre alt, dann kein Alkohol, wenn unter 18 Jahre alt, dann Bier, ansonsten jeden Alkohol
  • wenn "w", "W", "f", "F", dann ist die Anrede "Frau", wenn "m", "M", dann ist die Anrede "Herr", ansonsten Vor- und Nachname

switch vs if

  • switch performanter als if-else-if
  • switch kann erst ab Java 7 Stringvergleiche
  • keine Methodenaufrufe in case statement
  • Mehrfachbehandlung deutlich lesbarer mit switch

Ternary Operator*

  • Kurzform von if-else
  • macht in return statement Sinn

*NKR

Beispiel Ternary Operator*

public static void main(String[] args) {
  String output;
  int availableCash = 300;
  if(availableCash > 0) {
    output = "Patte fließt";
  } else {
    output = "Pleite";
  }
  
  output = availableCash > 0 ? "Patte fließt" : "Pleite";
}

Demo Ternary Operator

Warum braucht man Schleifen?

  • zum Bearbeiten von Listen
  • zum wiederholten Ausführen von Code

Beispiele für Schleifen

  • Liste von Klausuren, um Durchschnittsnote zu ermitteln
  • Liste von Artikeln im Warenkorb, um Summe zu ermitteln
  • Solange kein Film mit einer Bewertung von 4+, gehe zu nächstem Film

Arten von Schleifen

  • while-Schleife
  • do-while-Schleife
  • for-Schleife
  • for-each-Schleife

while-Schleife

  • while Schlüsselwort
  • Bedingung
  • Code Block

Beispiel while-Schleife

while ( Bedingung ) {
  // Quellcode
}

Demo while-Schleife

  • Zahlen von 0 bis 4 ausgeben.

do-while-Schleife

  • do Schlüsselwort
  • Code Block
  • while Schlüsselwort
  • Bedingung

Beispiel do-while-Schleife

do {
  // Quellcode
}
while ( Bedingung ) 

Code Block wird mindestends einmal ausgeführt

Demo do-while-Schleife

  • Zahlen von 0 bis 4 ausgeben.

for-Schleife

  • for Schlüsselwort
  • Einmal Statement (vor der Schleife)
  • Bedingung
  • Statement (nach jedem Code Block)
  • Code Block

Beispiel for-Schleife

for (int i = 0; i < 5; i++) {
  // Quellcode
}

Demo for-Schleife

  • Zahlen von 0 bis 4 ausgeben.

for-each-Schleife

  • for Schlüsselwort
  • Typ eines einzelnen Elements von einer Liste
  • Bezeichner des Datenobjekts
  • Datenobjekt mit einer Liste

Kann erst mit Arrays verstanden werden.

Beispiel for-each-Schleife

int[] numbers = { 0, 1, 2, 3, 4};
for (int number : numbers) {
  // Quellcode
}

Demo for-each-Schleife

  • Zahlen von 0 bis 4 ausgeben.

break Schlüsselwort

beendet die komplette Schleife

Demo break

  • Beende Schleife, wenn durch 2 teilbar.

continue Schlüsselwort

beendet den aktuellen Code Block

Demo continue

  • Überspringe alle ungeraden Zahlen

Arrays

Eigenschaften eines Arrays

  • speichert mehrere Datenobjekte eines gleichen Typs
  • speichert eine definierte Anzahl an Datenobjekten

Beispiele

  • die Namen von mir, meiner Freundin und meines besten Freundes
  • die Noten von mir, meiner Freundin und meines besten Freundes

Wie deklariert man ein Array?

  • Datentyp der zu speichernden Elemente
  • eckige Klammern []
  • Bezeichner
  • Zuweisungsoperator =
  • Elemente kommagetrennt in geschweiften Klammern
int[] numbers = { 0, 1, 2, 3, 4 }
das Array hat eine feste Länge von 5

Wie kann man Daten aus einem Array lesen?

int[] numbers = { 0, 1, 2, 3, 4 } 
int dasVierteElement = numbers[3];
der Index bei Arrays beginnt immer bei 0

Wie kann man Daten in einem Array speichern?

int[] numbers = { 0, 1, 2, 3, 4 } 
numbers[3] = 9;

Wie kann ich ein Array ohne Werte initialisieren?

int[] numbers = new int[4]; 
Integer[] numbers = new Integer[4]; 
numbers[3] = 9;

Schlüsselwort new ignorieren

Wie kann ich die Größe eines Arrays ermitteln?

int[] numbers = { 0, 1, 2, 3, 4 } 
int size = numbers.length; // size ist 5
Primitiver DatentypKomplexer Datentyp
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble

Wie macht man Arrays größer?

  • Größe des neuen Arrays ermittlen
  • neues Array mit neuer Größe erstellen
  • mit einer Schleife die Elemente aus dem alten Array kopieren

Wie fügt man ein Element an einer bestimmten Stelle ein?

  • Größe des neuen Arrays ermittlen
  • neues Array mit neuer Größe erstellen
  • mit einer Schleife die Elemente vor der neuen Stelle aus dem alten Array kopieren
  • neues Element hinzufügen
  • mit einer Schleife die Elemente nach der neuen Stelle aus dem alten Array kopieren

ArrayList

  • neue Elemente hinzufügen
  • neue Elemente an bestimmter Stelle hinzufügen
  • komplette Liste leeren
  • prüfen ob Liste ein bestimmtes Element enthält
  • ...

ArrayList

ArrayList<Integer> numbers = new ArrayList<>();

<Integer> sind Generics → Java 2

new kann erst mit Objekten verstanden werden

Wie kann ich die Größe einer ArrayList ermitteln?

ArrayList<Integer> numbers = new ArrayList<>();
int size = numbers.size(); // size ist 0

Demo Array und ArrayList

for-Schleife mit Array und ArrayList

Was sind jetzt die args in der main Methode?

Demo

Variable Argumentlisten*

werden auch als VarArgs bezeichnet

*NKR

Variable Argumentlisten

Damit eine Methode eine variable Anzahl von Argumenten eines gleichen Datentyps verarbeiten kann, muss ein Parameter als variable Argumentliste definiert werden.

Beispiel Verwendung

public static void main(Stirng[] args) {
  int twoParameters   = Example.sum(1, 2);
  int threeParameters = Example.sum(1, 2, 3);
  int fourParameters  = Example.sum(1, 2, 3, 4);
}

Beispiel Implementierung

public static int sum(int... numbers) {
  // numbers ist ein Array
  int sum = 0;
  for(int number : numbers) {
    sum = sum + number;
  }
  return sum;
}

VarArgs

  • stehen am Ende der Parameterliste
  • nur ein VarArgs Parameter je Methode
  • VarArgs Parameter ist ein Array
  • Argumente werden kommagetrennt definiert