Video: Week 2 2025
Java-udviklere oplever ofte problemer med at finde ud af, hvorfor et program mislykkes, når der opstår et problem med blokadgang. Den grundlæggende retningslinje er, at enhver variabel, du opretter inden for en blok, kun er defineret inden for den pågældende blok. Når du f.eks. Ser på den følgende kode, ser du et typisk blokadgangsscenarie.
// Opret en variabel inde i en blok. for (int i = 0; i <10; i ++) // Vis værdien af denne variabel. System. ud. println ("Værdien af i er:" + i); // Adgang uden for blokken virker ikke. System. ud. println ("Værdien af i er:" + i);
Eksemplet viser værdien af i inden for forløbet (en type blok) uden problem. Forsøg på at få adgang til jeg uden for blokken er imidlertid ikke acceptabel, fordi variablen ikke er defineret. Kompilatoren vil fange denne fejl.
Et andet potentielt problem opstår, når en variabel er defineret i applikationen og også inden for en blok. Fordi denne situation sandsynligvis vil skabe problemer, vil nyere versioner af Java ikke tillade den slags kode, der vises her:
offentlig statisk tomgang hoved (String [] args) {// Definer en variabel. int i = 0; // Opret en variabel inde i en blok. for (int i = 0; i <10; i ++) // Vis værdien af denne variabel. System. ud. println ("Værdien af i er:" + i); // Adgang uden for blokken virker ikke. System. ud. println ("Værdien af jeg er:" + i);}
Kompilatoren forhindrer dig ikke altid i at skyde dig selv i foden. I mange situationer gør udvikleren noget med variablen og forstår ikke konsekvenserne. For eksempel er følgende kode helt lovlig i Java.
Offentlig statisk tomrum hoved (String [] args) {// Definer en variabel. int i = 0; // Opret en variabel inde i en blok. for (i = 0; i <10; i ++) // Vis værdien af denne variabel. System. ud. println ("Værdien af i er:" + i); // Adgang uden for blokken virker ikke. System. ud. println ("Værdien af i er:" + i);}
For loop viser værdierne 0 til 9 på grund af tilstanden inden for loop-angivelsen. Det endelige opkald til System. ud. println () viser en værdi på 10, ikke 0 eller 9 som nogle udviklere måtte forvente.
I + + -delen af erklæringen forekommer, og så bedømmes tilstanden, så den endelige værdi af i er 10, ikke 9, fordi den skal være 10 for at tilstanden skal falde.
Pointen er, at du skal overveje, hvordan en blok arbejder med en variabel for at bestemme, om du kan få adgang til variablen, og hvad værdien vil indeholde ved afslutningen fra blokken.