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?
Deklaration av variabler
6 svar · 834 visningar · startad av rikard81
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
Tack. Jag förstår precis. Ska försöka börja med det.
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;
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.
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++