kobranturre skrev:
... Det är en sak jag inte fattar. Exakt vad gör/säger/betyder
public static void main(String[] args){
?
...
Förtydligande till Limes beskrivning:
En klass (Aklass) som ska kunna köras med: java Aklass
måste ha en public metod som heter main, är static och void och tar som indata en String-array. Däremot är String-arrayen ett argument vilket som helst, så vad det heter bestämmer du. När jag har en mainmetod som inte är avsedd att ta argument brukar jag definiera den så här:
public static void main (String[] notUsed) {....}
Det funkar hur bra som helst.
public - den syns och kan anropas utanför klassen, dvs av vilken klass som helst och (i fallet med main) även från kommandoraden.
static - det är en klassmetod och inte en instansmetod. (Vilket kortfattat uttryckt innebär att varje instans av Aklass kommer att använda samma metod och du behöver inte ens en instans för att anropa den.)
Exempel: Det är en static metod i Integer som används när du gör om en String som "2" till heltalet 2 mha Integer.parseInt("2"). Då har du ingen specifik Integer, bara själva klassen.
void - returnerar ingenting.
Exempel på vad den där String-arrayen gör:
public class Aklass {
public static void main(String[] args) {
if (args.length == 0) System.out.println("No args used!");
else System.out.print(args.length + " args used! ");
if (args.length == 5) System.out.println(args[4]);
}
}
java Aklass ==> No args used!
java Aklass OK? ==> 1 args used!
java Aklass Flera arg kommer efter varann ==> 5 args used! varann
-------
Brasklapp: Har för mig att man kollar längden på en array med length(). Kan ev heta något annat, det var ett tag sedan jag gjorde det. Men det finns en sån metod som kollar det.
RED: Exemplet - men inte brasklappen - redigerat med anledningen av rättelsen nedan. Lämnade brasklappen för kontinuitetens skull.