Zusammenfassung

Rekursion

Lineare Rekursion - es gibt in jedem Rekurionsschritt genau einen Aufruf

private static int sumRecursive(int sum) {
    if (num <= 1) {
         return 1;
    } else {
        return sumRecursive(num - 1) + num;
    }
}

Endrekursion - jeder rekursive Aufruf ist die letzte Aktion der Methode

private static int gcdRecursive(int a, int b) {
    if (a == b) {
        return a;
    } else if (a > b) {
        return gcdRecursive(a - b, b);
    } else {
        return gcdRecursive(a, b - a);
    }
}

Verschachtelte Rekursion - Argumente bei einem rekursiven Aufruf sind selbst wieder Rekursionsaufrufe

private static int modulo(int a, int b) {
    if (a < b) {
        return a;
    } else if (a < 2 * b) {
        return a - b;
    } else {
        return modulo(modulo(a, 2 * b), b);
    }
}

Wechselseitige Rekursion - Der rekursive Aufruf erfolgt indirekt

private static boolean even(int n) {
    if (n == 0) {
        return true;
    }
    return odd(n - 1);
}

private static boolean odd(int n) {
    if (n == 0) {
        return false;
    }
    return even(n - 1);
}

Arrays

Alle Array-Elemente werden automatisch initialisiert mit:

  • 0 bei int, byte, short
  • 0L bei long
  • 0.0f bei float
  • 0.0d bei double
  • \u0000
  • false bei boolean
  • null bei String (und anderen Referenztypen)

Eine Array-Variable ist nur eine Referenz auf das eigentliche Array-Objekt.

Bei Übergabe eines Arrays an eine Methode wird die Referenz kopiert. Änderungen sind außerhalb der Methode sichtbar.

Eigenschaft Erklärung
Identität Zwei Werte bzw. Objekte sind identisch, wenn die Anwendung von „==“ true liefert
Gleichheit Wenn auch referenzierte Objekte in den Vergleich miteinbezogen werden
Unterscheidung Gleiche Werte von elementaren Typen (z. B. int) sind immer identisch, Identische Objekte (z. B. Arrays) sind stets gleich, Gleiche Objekte (z. B. Arrays mit gleichem Inhalt) müssen aber nicht identisch sein