webForumDet fria alternativet

Deklaration av variabler

6 svar · 834 visningar · startad av rikard81

rikard81Medlem sedan mars 2007357 inlägg
#1

Har sett att man kan deklarere variablerna på två olika sätt. uppe under public static void main, eller direkt framför variabeln. Vad är skillnaderna och vad är att rekommendera?

ercizMedlem sedan maj 20011 880 inlägg
#2

Deklarerar du dem tidigt i main, så blir se åtkomliga i hela main. Men om du istället deklarerar dem i en for-loop så blir de bara åtkomliga i själva loopen, vilket är bättre. Försök att ha ett så litet åtkomligt område (scope) som möjligt. Då undviker du fel och sparar på minnet.

Kan förklara det bättre om du visar lite kod, för just ditt fall.

Vill du bli duktig på Java och lära dig många Best-practice så rekommenderar jag boken Effective Java 2ed.

Där tas detta upp i Item 45: Minimize the scope of local variables

rikard81Medlem sedan mars 2007357 inlägg
#3

Tack. Jag förstår precis. Ska försöka börja med det.

ercizMedlem sedan maj 20011 880 inlägg
#4

En annan sak att tänka på är Item 19: Minimize mutability. Vilket kort sagt betyder att man ska favorisera variabler som bara kan tilldelas en gång, och därefter inte ändras. I Java betyder det att man använder final på alla variabler när de deklareras. I funktionella språk så används den typen av variabler uteslutande.

T.ex. i Java så skriver du:

final int myId;
final JButton myButton;

istället för

int myId;
JButton myButton;
ercizMedlem sedan maj 20011 880 inlägg
#5

erciz skrev:

Deklarerar du dem tidigt i main, så blir se åtkomliga i hela main. Men om du istället deklarerar dem i en for-loop så blir de bara åtkomliga i själva loopen, vilket är bättre. Försök att ha ett så litet åtkomligt område (scope) som möjligt. Då undviker du fel och sparar på minnet.

Kan förklara det bättre om du visar lite kod, för just ditt fall.

Vill du bli duktig på Java och lära dig många Best-practice så rekommenderar jag boken Effective Java 2ed.

Där tas detta upp i Item 45: Minimize the scope of local variables

Ett konkret exempel är att använda for-loopar istället för while-loopar i vissa tillfällen. Jämför:

int n = 0;
while(n<10) {
    // gör nåt
    n++
}

for(int n = 0; n<10; n++) {
    // gör nåt
}

I exemplet med while-loopen betyder det att n är åtkomlig även efter loopen och kan av misstag användas igen. Vill du skriva ytterligare en while-loop så måste du välja ett annat variabelnamn eftersom n redan är upptaget i det scopet. I for-loopen är varibeln n bara åtkomlig i själva for-loopen och en variabel med samma namn kan användas senare i programmen utan att man behöver oroa sig för namnkollisioner.

rikard81Medlem sedan mars 2007357 inlägg
#6

Har inte riktigt kommit dit än. Men tack ändå. Förstår satserna. n = 0 och att n upprepas upp till 10. Men vad menas med n++

ercizMedlem sedan maj 20011 880 inlägg
#7

rikard81 skrev:

Men vad menas med n++

Det är samma sak som

n = n + 1

n ökas med 1

125 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
122 ms — hämta tråd, inlägg och bilagor (db)