Java Academy · Les

Scope en levensduur

Leer waar variabelen zichtbaar zijn (scope) en hoelang ze bestaan (levensduur): blokken, lussen, methoden, velden, afscherming en final-parameters.

Les 3 van 38 stappen

Scope en levensduur is een gratis Java Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 3 lessen.

Bereik en levensduur

Bereik = waar een naam, zoals een variabele, zichtbaar is. Levensduur = hoe lang de variabele bestaat. Je ziet blokbereik, lusbereik, lokale variabelen in methoden, klassevelden en regels voor naamafscherming.

Blokbereik

Blokbereik: een variabele die tussen accolades wordt gedeclareerd, is alleen binnen die accolades zichtbaar.

public class Main {
  public static void main(String[] args) {
    int a = 10; // visible in main
    {
      int b = 20; // visible only inside this block
      System.out.println("inside block: a=" + a + ", b=" + b);
    }
    System.out.println("outside block: a=" + a);
    // System.out.println(b); // would NOT compile: b is out of scope
  }
}

Lusbereik

Lusbereik: een lusindex die in de for-kop wordt gedeclareerd, is alleen binnen de lusbody zichtbaar.

public class Main {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i = i + 1) {
      System.out.println("i in loop = " + i);
    }
    // System.out.println(i); // would NOT compile: i is scoped to the loop

    int j;
    for (j = 0; j < 2; j = j + 1) {
      System.out.println("j in loop = " + j);
    }
    System.out.println("j after loop = " + j); // OK: j declared outside
  }
}

Velden en lokale variabelen

Levensduur: klassevelden en static-velden blijven tijdens meerdere aanroepen bestaan; lokale variabelen worden bij elke aanroep opnieuw gemaakt en verwijderd wanneer de methode eindigt.

public class Main {
  // static field (class-level): lives for the program lifetime
  static int counter = 0;

  static void tick() {
    int local = 100; // local: created each call, dies when method returns
    counter = counter + 1;
    System.out.println("tick: counter=" + counter + ", local=" + local);
  }

  public static void main(String[] args) {
    tick();
    tick();
    tick();
    System.out.println("final counter=" + counter);
  }
}

Naamafscherming

Naamafscherming: een interne declaratie, bijvoorbeeld een parameter of lokale variabele, kan een buitenliggende naam met dezelfde identifier verbergen. Gebruik ClassName.field of this.field in instantiemethoden om toegang te krijgen tot het verborgen veld.

public class Main {
  static String label = "FIELD"; // class field

  static void demo(String label) { // parameter shadows field name
    System.out.println("param label = " + label); // uses parameter
    {
      String labelInner = "INNER"; // new name in inner block
      System.out.println("inner block labelInner = " + labelInner);
      System.out.println("still param label = " + label);
    }
    System.out.println("field via class name = " + Main.label); // refer to field explicitly
  }

  public static void main(String[] args) {
    demo("PARAM");
  }
}

Final en doorgeven op waarde

Parameters met final kunnen niet opnieuw worden toegewezen. Java geeft parameters door op waarde: een nieuwe toewijzing aan de parameter verandert de variabele van de aanroeper niet.

public class Main {
  // final parameter cannot be reassigned inside the method
  static int inc(final int n) {
    // n = n + 1; // would NOT compile if uncommented
    return n + 1; // safe: return a new value
  }

  static void reassign(int x) {
    x = 999; // reassignes the local copy; caller variable is unchanged
  }

  public static void main(String[] args) {
    int a = 5;
    int b = inc(a);
    System.out.println("a=" + a + ", b=inc(a)=" + b);

    reassign(a);
    System.out.println("after reassign(a): a is still " + a);
  }
}

Controle van bereik en levensduur

Snelle controle: Welke uitspraak over bereik en levensduur is WAAR?

Samenvatting en volgende stap

Samenvatting: Je hebt met blok- en lusbereik, velden en lokale variabelen, naamafscherming en final-parameters geoefend. Volgende stap: ga verder met ontwerp- en hergebruikspatronen in A2.2.

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “Scope en levensduur” gratis?

Ja — de volledige tekst van “Scope en levensduur” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 3 lessen.

Wat leer ik in “Scope en levensduur”?

Leer waar variabelen zichtbaar zijn (scope) en hoelang ze bestaan (levensduur): blokken, lussen, methoden, velden, afscherming en final-parameters. Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.

Hoe lang duurt de les “Scope en levensduur”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Methoden en parameters definiëren
  2. Retourwaarden en overloading
  3. Scope en levensduur
← Terug naar Java Academy