Video: Week 1 2024
Java-utvecklare upplever ofta problem med att ta reda på varför ett program misslyckas när det stöter på ett blockåtkomstproblem. Den grundläggande riktlinjen är att alla variabler du skapar inom ett block definieras endast inom det här blocket. När du till exempel tittar på följande kod ser du ett typiskt blockåtkomstscenario.
// Skapa en variabel i ett block. för (int i = 0; i <10; i ++) // Visa värdet på den variabeln. Systemet. ut. println ("Värdet av i är:" + i); // Tillträde utanför blocket fungerar inte. Systemet. ut. println ("Värdet av i är:" + i);
Exemplet visar värdet på i inom loopbandet (en typ av block) utan problem. Att försöka få åtkomst till jag utanför blocket är dock inte acceptabelt eftersom variabeln inte är definierad. Kompilatorn kommer fånga detta fel.
Ett annat potentiellt problem uppstår när en variabel definieras i applikationen och även inom ett block. Eftersom den här situationen sannolikt kommer att skapa problem tillåter nyare versioner av Java inte den typ av kod som visas här:
statisk statisk tomt huvud (String [] args) {// Definiera en variabel. int i = 0; // Skapa en variabel i ett block. för (int i = 0; i <10; i ++) // Visa värdet på den variabeln. Systemet. ut. println ("Värdet av i är:" + i); // Tillträde utanför blocket fungerar inte. Systemet. ut. println ("Värdet av jag är:" + i);}
Kompilatorn hindrar dig inte alltid från att skjuta dig i foten. I många situationer gör utvecklaren något med variabeln och förstår inte konsekvenserna. Till exempel är följande kod helt laglig i Java.
statisk statisk tomt huvud (String [] args) {// Definiera en variabel. int i = 0; // Skapa en variabel i ett block. för (i = 0; i <10; i ++) // Visa värdet på den variabeln. Systemet. ut. println ("Värdet av i är:" + i); // Tillträde utanför blocket fungerar inte. Systemet. ut. println ("Värdet av i är:" + i);}
För loop visar värdena 0 till 9 på grund av tillståndet i loop-deklarationen. Det slutliga samtalet till System. ut. println () visar ett värde på 10, inte 0 eller 9 som vissa utvecklare kan förvänta sig.
I ++-delen av deklarationen uppträder, och villkoret utvärderas så det sista värdet av i är 10, inte 9 eftersom det måste vara 10 för att tillståndet ska bli falskt.
Poängen är att du måste överväga hur ett block arbetar med en variabel för att bestämma om du kan komma åt variabeln och vad värdet kommer att innehålla vid avslut från blocket.