Omfang og levetid
Forstå hvor variabler er synlige (omfang), og hvor lenge de eksisterer (levetid): blokker, løkker, metoder, felt, skjuling og final-parametere.
Omfang og levetid er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 3 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 3 leksjoner.
Scope kontra levetid
Scope = hvor et navn, altså en variabel, er synlig. Levetid = hvor lenge variabelen eksisterer. Du skal se blokkscope, løkkescope, lokale variabler i metoder, klassefelter og regler for skyggelegging.
Blokkscope
Blokkscope: En variabel som deklareres innenfor krøllparenteser, er bare synlig innenfor disse krøllparentesene.
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
}
}
Løkkescope
Løkkescope: En løkkeindeks som deklareres i for-hodet, er bare synlig inne i løkkekroppen.
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
}
}
Felter kontra lokale variabler
Levetid: Klasse- og static-felter lever videre mellom kall; lokale variabler opprettes på nytt ved hvert kall og forkastes når metoden avsluttes.
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);
}
}
Skyggelegging
Skyggelegging: En indre deklarasjon, for eksempel en parameter eller lokal variabel, kan skjule et ytre navn med samme identifikator. Bruk ClassName.field, eller this.field i instansmetoder, for å få tilgang til det skjulte feltet.
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 og pass-by-value
final-parametere kan ikke tilordnes på nytt. Java bruker pass-by-value: Hvis parameteren tilordnes på nytt, endres ikke variabelen hos kalleren.
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);
}
}
Kontroll av scope og levetid
Rask kontroll: Hvilket utsagn om scope og levetid er SANT?
Oppsummering og neste steg
Oppsummering: Du øvde på blokk- og løkkescope, felter kontra lokale variabler, skyggelegging og final-parametere. Neste steg: gå videre til design- og gjenbruksmønstre i A2.2.
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 104
- Leksjoner
- 374
Ofte stilte spørsmål
Er leksjonen «Omfang og levetid» gratis?
Ja – hele teksten i «Omfang og levetid» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 3 leksjoner.
Hva lærer jeg i «Omfang og levetid»?
Forstå hvor variabler er synlige (omfang), og hvor lenge de eksisterer (levetid): blokker, løkker, metoder, felt, skjuling og final-parametere. Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Java Academy?
Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.
Hvor lang tid tar leksjonen «Omfang og levetid»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?
Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Definere metoder og parametere
- Returverdier og overlagring
- Omfang og levetid