Εάν ένα πρόγραμμα χρειάζεται να λειτουργήσει με πολλές αξίες του ίδιου Τύπος δεδομένων, θα μπορούσατε να δηλώσετε a μεταβλητός για κάθε αριθμό. Για παράδειγμα, ένα πρόγραμμα που εμφανίζει αριθμούς κλήρων:
int lotteryNumber1 = 16;
int lotteryNumber2 = 32;
int λοταρίαNumber3 = 12;
int lotteryNumber4 = 23;
int λοταρίαNumber5 = 33;int lotteryNumber6 = 20;
Ένας πιο κομψός τρόπος αντιμετώπισης των αξιών που μπορούν να ομαδοποιηθούν είναι η χρήση μιας συστοιχίας. Ένας πίνακας είναι ένα δοχείο που περιέχει ένα σταθερό αριθμό τιμών ενός τύπου δεδομένων. Στο παραπάνω παράδειγμα, οι αριθμοί κλήρωσης θα μπορούσαν να ομαδοποιηθούν σε μια συστοιχία int:
int [] LotteryNumbers = {16,32,12,23,33,20}.
Σκεφτείτε μια σειρά ως μια σειρά από κουτιά. Ο αριθμός των πλαισίων στον πίνακα δεν μπορεί να αλλάξει. Κάθε κιβώτιο μπορεί να διατηρήσει μια τιμή εφόσον είναι του ίδιου τύπου δεδομένων με τις τιμές που περιέχονται στα άλλα πλαίσια. Μπορείτε να κοιτάξετε μέσα σε ένα κουτί για να δείτε τι αξία περιέχει ή αντικαταστήστε τα περιεχόμενα του κουτιού με μια άλλη τιμή. Όταν μιλάμε για συστοιχίες, τα πλαίσια ονομάζονται στοιχεία.
Δηλώνοντας και αρχικοποιώντας έναν πίνακα
Η δήλωση δήλωσης για έναν πίνακα είναι παρόμοια με αυτή που χρησιμοποιήθηκε για δηλώστε οποιαδήποτε άλλη μεταβλητή. Περιέχει τον τύπο δεδομένων που ακολουθείται από το όνομα του πίνακα - η μόνη διαφορά είναι η συμπερίληψη των αγκύλων δίπλα στον τύπο δεδομένων:
int [] intArray;
float [] floatArray.char [] charArray.
ο δηλώσεις δήλωσης παραπάνω λένε στον μεταγλωττιστή ότι
intArrayμεταβλητή είναι μια σειρά από
ints,
floatArrayείναι μια σειρά από
πλωτήρεςκαι
charArrayείναι μια σειρά χαρακτήρων. Όπως και κάθε μεταβλητή, δεν μπορούν να χρησιμοποιηθούν μέχρι να αρχικοποιηθούν με την ανάθεση μιας τιμής. Για έναν πίνακα η εκχώρηση μιας τιμής σε μια συστοιχία πρέπει να ορίζει το μέγεθος μιας συστοιχίας:
intArray = νέο int [10];
Ο αριθμός μέσα στις αγκύλες ορίζει πόσα στοιχεία διατηρεί η συστοιχία. Η παραπάνω εντολή εκχώρησης δημιουργεί μια συστοιχία int με δέκα στοιχεία. Φυσικά, δεν υπάρχει κανένας λόγος για τον οποίο η δήλωση και η ανάθεση δεν μπορούν να συμβούν σε μία δήλωση:
float [] floatArray = νέος πλωτήρας [10];
Οι πίνακες δεν περιορίζονται σε πρωτόγονους τύπους δεδομένων. Μπορούν να δημιουργηθούν πίνακες αντικειμένων:
String [] ονόματα = νέα σειρά [5];
Χρησιμοποιώντας έναν πίνακα
Μετά την αρχικοποίηση ενός πίνακα, τα στοιχεία μπορούν να έχουν τιμές που τους έχουν εκχωρηθεί χρησιμοποιώντας το δείκτη του πίνακα. Ο δείκτης καθορίζει τη θέση κάθε στοιχείου στη συστοιχία. Το πρώτο στοιχείο είναι στο 0, το δεύτερο στοιχείο στο 1 και ούτω καθεξής. Είναι σημαντικό να σημειώσουμε ότι ο δείκτης του πρώτου στοιχείου είναι 0. Είναι εύκολο να σκεφτούμε ότι επειδή μια διάταξη έχει δέκα στοιχεία που ο δείκτης είναι από 1 έως 10 αντί από 0 έως 9. Για παράδειγμα, εάν επιστρέψουμε στο παράδειγμα αριθμών λαχειοφόρων αγορών, μπορούμε να δημιουργήσουμε έναν πίνακα που περιέχει 6 στοιχεία και να αντιστοιχίσουμε τους αριθμούς των λαχειοφόρων αγορών στα στοιχεία:
int [] αριθμοίNumbers = νέο int [6];
αριθμοί κλήρωσης [0] = 16;
αριθμοί στοιχήματος [1] = 32;
αριθμοί στοιχημάτων [2] = 12;
αριθμοί στοιχημάτων [3] = 23;
αριθμοί στοιχημάτων [4] = 33;αριθμοί στοιχημάτων [5] = 20;
Υπάρχει μια συντόμευση για την πλήρωση στοιχείων σε έναν πίνακα τοποθετώντας τις τιμές για τα στοιχεία στη δήλωση δήλωσης:
int [] LotteryNumbers = {16,32,12,23,33,20}.String [] ονόματα = {"John", "James", "Julian", "Jack", "Jonathon"}?
Οι τιμές για κάθε στοιχείο τοποθετούνται μέσα σε ένα ζευγάρι σγουρά. Η σειρά των τιμών καθορίζει σε ποιο στοιχείο αποδίδεται η τιμή που αρχίζει με τη θέση δείκτη 0. Ο αριθμός των στοιχείων στη συστοιχία καθορίζεται από τον αριθμό των τιμών μέσα στις σγουρές αγκύλες.
Για να πάρει την αξία ενός στοιχείου χρησιμοποιείται ο δείκτης:
System.out.println ("Η τιμή του πρώτου στοιχείου είναι" + LotteryNumbers [0]);
Για να μάθετε πόσα στοιχεία χρησιμοποιεί ένας πίνακας για το πεδίο μήκους:
System.out.println ("Η σειρά αριθμών στοιχημάτων έχει" + στοιχεία λοταρίαςNumbers.length + ").
Σημείωση: Ένα συνηθισμένο λάθος κατά τη χρήση της μεθόδου μήκους είναι να ξεχάσετε είναι να χρησιμοποιήσετε την τιμή μήκους ως θέση δείκτη. Αυτό θα έχει πάντα ως αποτέλεσμα ένα σφάλμα, καθώς οι θέσεις δείκτη ενός πίνακα είναι 0 έως το μήκος - 1.
Πολυδιάστατες συστοιχίες
Οι συστοιχίες που είδαμε μέχρι τώρα είναι γνωστές ως μονοδιάστατες (ή μονοδιάστατες) συστοιχίες. Αυτό σημαίνει ότι έχουν μόνο μια σειρά στοιχείων. Ωστόσο, οι συστοιχίες μπορούν να έχουν περισσότερες από μία διάσταση. Ένα πολυδιάστατο είναι στην πραγματικότητα ένας πίνακας που περιέχει συστοιχίες:
int [] [] αριθμός στοιχήματος = {{16,32,12,23,33,20}, {34,40,3,11,33,24}},
Ο δείκτης για μια πολυδιάστατη διάταξη αποτελείται από δύο αριθμούς:
System.out.println ("Η τιμή του στοιχείου 1,4 είναι" + LotteryNumbers [1] [4]);
Αν και το μήκος των συστοιχιών που περιέχονται σε μια πολυδιάστατη διάταξη δεν χρειάζεται να έχει το ίδιο μήκος:
String [] [] ονόματα = νέα σειρά [5] [7];
Αντιγραφή ενός πίνακα
Για να αντιγράψετε έναν πίνακα ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε το
arraycopyμέθοδος της κλάσης συστήματος. ο
arraycopyη μέθοδος μπορεί να χρησιμοποιηθεί για την αντιγραφή όλων των στοιχείων ενός πίνακα ή ενός υποτίτλου τους. Υπάρχουν πέντε παράμετροι που διαβιβάζονται στο
arraycopyμέθοδος - ο αρχικός πίνακας, η θέση του δείκτη για να αρχίσει η αντιγραφή ενός στοιχείου από τον νέο πίνακα, η θέση του δείκτη για να ξεκινήσει η εισαγωγή από τον αριθμό των στοιχείων που θα αντιγραφούν:
Δημόσια στατική κενή συστοιχία (Object src, int srcPos, Object dest, int destPos, int μήκος)
Για παράδειγμα, για να δημιουργήσετε ένα νέο πίνακα που περιέχει τα τελευταία τέσσερα στοιχεία ενός
intπίνακας:
int [] LotteryNumbers = {16,32,12,23,33,20}.
int [] newArrayNumbers = νέο int [4];System.arraycopy (αριθμοί στοιχημάτων, 2, newArrayNumbers, 0, 4);
Δεδομένου ότι οι πίνακες είναι σταθερού μήκους
arraycopyη μέθοδος μπορεί να είναι ένας χρήσιμος τρόπος για να αλλάξετε το μέγεθος ενός πίνακα.
Για να βελτιώσετε τις γνώσεις σας σχετικά με τις συστοιχίες μπορείτε να μάθετε πώς μπορείτε να χειριστείτε συστοιχίες χρησιμοποιώντας τους Arrays κατηγορίας και δημιουργίας δυναμικών συστοιχιών (δηλ. συστοιχιών όταν ο αριθμός των στοιχείων δεν είναι σταθερός αριθμός) χρησιμοποιώντας την ArrayList class.