Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmierung:lokal-global-variables [2024/09/04 10:04] – swe | programmierung:lokal-global-variables [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Lokale Variablen ===== | + | # Gültigkeitsbereich (Scope) |
| - | - **Definition**: Variablen, die innerhalb einer Methode | + | Der **Gültigkeitsbereich** oder **Scope** einer Variablen beschreibt, in |
| - | - **Sichtbarkeit**: Nur innerhalb der Methode oder des Blocks, in dem sie deklariert wurden.\\ | + | welchem Teil des Codes die Variable sichtbar und nutzbar ist. In Java |
| - | - **Lebensdauer**: Existieren nur während der Ausführung der Methode oder des Blocks. | + | gibt es verschiedene Arten von Gültigkeitsbereichen: |
| - | ===== Globale | + | 1. **Lokaler Scope**: |
| + | Blocks | ||
| + | 2. **Klassen-Scope**: | ||
| + | einer Klasse deklariert werden. | ||
| + | 3. **Globaler Scope**: In Java gibt es keinen echten globalen Scope, da | ||
| + | alles innerhalb von Klassen definiert wird. | ||
| - | - **Definition**: | + | **Beispiel |
| - | - **Instanzvariablen**: | + | |
| - | - **Klassenvariablen**: | + | |
| - | - **Sichtbarkeit**: | + | |
| - | - **Lebensdauer**: | + | |
| - | **Beispielcode** | + | In `for`-Schleifen ist der Scope der Schleifenvariablen auf den |
| - | <code java| download> | + | Schleifenblock beschränkt. Hier ein einfaches Beispiel: |
| - | public class VariableExample { | + | |
| - | // Globale Variable (Instanzvariable) | + | |
| - | private int globalCounter = 0; | + | |
| - | + | ||
| - | // Globale Variable (Klassenvariable) | + | |
| - | private static int globalStaticCounter = 0; | + | |
| - | + | ||
| - | public void demonstrateLocalVariable() { | + | |
| - | // Lokale Variable | + | |
| - | int localCounter = 0; | + | |
| + | ```java | ||
| + | public class ScopeExample { | ||
| + | public static void main(String[] args) { | ||
| for (int i = 0; i < 5; i++) { | for (int i = 0; i < 5; i++) { | ||
| - | | + | System.out.println(" |
| - | globalCounter++; | + | |
| - | globalStaticCounter++; | + | |
| - | System.out.println(" | + | |
| - | System.out.println(" | + | |
| - | | + | |
| } | } | ||
| + | // System.out.println(i); | ||
| } | } | ||
| + | } | ||
| + | ``` | ||
| - | public static void main(String[] args) { | + | In diesem Beispiel ist die Variable `i` nur innerhalb der `for`-Schleife |
| - | | + | sichtbar. Wenn du versuchst, `i` außerhalb der Schleife zu verwenden, |
| - | | + | erhältst du einen Kompilierungsfehler, |
| + | Gültigkeitsbereichs liegt. | ||
| - | // Zugriff auf die Klassenvariable ohne Instanz | + | **Verschachtelte `for`-Schleifen** |
| - | for (int i = 0; i < 5; i++) { | + | |
| - | | + | Auch in verschachtelten `for`-Schleifen hat jede Schleifenvariable |
| - | System.out.println(" | + | ihren eigenen Scope: |
| + | |||
| + | ```java | ||
| + | public class NestedLoopExample { | ||
| + | public static void main(String[] args) { | ||
| + | for (int i = 0; i < 3; i++) { | ||
| + | | ||
| + | System.out.println(" | ||
| + | } | ||
| } | } | ||
| } | } | ||
| } | } | ||
| - | </code> | + | ``` |
| + | |||
| + | Hier haben `i` und `j` jeweils ihren eigenen Scope innerhalb der | ||
| + | jeweiligen Schleifen. Du kannst `i` und `j` außerhalb ihrer Schleifen | ||
| + | nicht verwenden. | ||
| + | |||
| + | \<WRAP center round important 60%\> | ||
| + | |||
| + | 1. **Deklaration innerhalb der Schleife**: Variablen, die innerhalb | ||
| + | einer `for`-Schleife deklariert werden, sind nur innerhalb dieser | ||
| + | Schleife sichtbar. | ||
| + | 2. **Wiederverwendung von Variablennamen**: | ||
| + | Variablennamen in verschiedenen Schleifen verwenden, da jede | ||
| + | Schleife ihren eigenen Scope hat. | ||
| - | **Erklärung**\\ | + | \</WRAP\> |
| - | - **Lokale Variable** `localCounter` wird innerhalb der Methode `demonstrateLocalVariable` deklariert und ist nur dort sichtbar.\\ | + | |
| - | - **Instanzvariable** `globalCounter` ist innerhalb der gesamten Klasse sichtbar und wird bei jeder Instanz der Klasse `VariableExample` separat gehalten.\\ | + | |
| - | - **Klassenvariable** `globalStaticCounter` ist ebenfalls innerhalb der gesamten Klasse sichtbar, aber es gibt nur eine Kopie dieser Variable, die von allen Instanzen der Klasse geteilt wird. | + | |