Πώς μπορείτε να εξηγήσετε πολύ καλά, σε έναν αρχικό, τη σημασία της String args[]
και τη χρήση της static
στο παρακάτω απόσπασμα;
class FirstApp {
public static void main(String[] args) {
...
}
}
Θα έδειχνα σε έναν αρχάριο το άρθρο του Wiki για τη συνάρτηση Main, και στη συνέχεια θα το συμπλήρωνα με αυτό.
Η Java αρχίζει να εκτελεί ένα πρόγραμμα μόνο με τη συγκεκριμένη υπογραφή public static void main(String[] args)
, και μπορεί κανείς να σκεφτεί μια υπογραφή σαν το δικό του όνομα - είναι ο τρόπος με τον οποίο η Java μπορεί να ξεχωρίσει τη διαφορά μεταξύ της main()
κάποιου άλλου και της μοναδικής αληθινής main()
.
Το String[] args
είναι μια συλλογή από String
, χωρισμένα με κενό, τα οποία μπορούν να πληκτρολογηθούν στο πρόγραμμα στο τερματικό. Τις περισσότερες φορές, ο αρχάριος δεν πρόκειται να χρησιμοποιήσει αυτή τη μεταβλητή, αλλά είναι πάντα εκεί για παν ενδεχόμενο.
Αν το εξηγούσα αυτό σε κάποιον, θα έλεγα ότι θα φτάσουμε σε αυτό αργότερα, για την ώρα πρέπει να ξέρετε ότι ο τρόπος για να εκτελέσετε το πρόγραμμά σας είναι να χρησιμοποιήσετε το :
public static void main(String[] args) {
...
}
Υποθέτοντας ότι ξέρει τι είναι ένας πίνακας, θα'έλεγα ότι το args είναι ένας πίνακας επιχειρημάτων και μπορείς να δείξεις μερικά ωραία παραδείγματα.
Στη συνέχεια, αφού'έχετε πάει λίγο για Java/JVM και τέτοια πράγματα, θα'φτάσετε στους τροποποιητές τελικά σε static και public επίσης.
Τότε μπορείς να αφιερώσεις λίγο χρόνο μιλώντας για τη σημασία αυτών IMHO.
Θα μπορούσες να αναφέρεις και άλλα "ωραία"- πράγματα όπως τα varargs που μπορείς να τα χρησιμοποιήσεις σε μεταγενέστερες εκδόσεις της Java.
public static void main(String ...args) {
//...
}
Για να διατηρήσετε τη στάση του αρχάριου μπορείτε να εξηγήσετε ότι όλη η γραμμή εντολών χωρίζεται αυτόματα σε έναν πίνακα String (το String[]
).
Για το static
θα πρέπει να εξηγήσετε ότι δεν είναι ένα πεδίο όπως τα άλλα : είναι μοναδικό στο JVM ακόμα και αν έχετε χιλιάδες περιπτώσεις της κλάσης
Έτσι η main
είναι static, επειδή είναι ο μόνος τρόπος να τη βρείτε (συνδεδεμένη σε δική της κλάση) σε μια jar
.
... αφού κοιτάξετε την κωδικοποίηση, και η δουλειά σας αρχίζει ...