Στην Java, οι πίνακες είναι ένας τρόπος να αποθηκεύεις πολλές τιμές του ίδιου τύπου σε μία μόνο δομή. Σε αντίθεση με άλλες δομές δεδομένων, οι πίνακες έχουν σταθερό μέγεθος μόλις δημιουργηθούν. Μπορείς να αναθέσεις στοιχεία σε έναν πίνακα ή να τα ανακτήσεις από αυτόν χρησιμοποιώντας μια θέση. Στους πίνακες της Java οι θέσεις ξεκινούν από το μηδέν: η θέση του πρώτου στοιχείου είναι 0, η θέση του δεύτερου στοιχείου είναι 1 κ.ο.κ.
Ακολουθεί η βασική σύνταξη για την αρχικοποίηση ενός πίνακα:
type[] variableName = new type[size];
Το type είναι ο τύπος των στοιχείων του πίνακα, ο οποίος μπορεί να είναι ένας πρωτόγονος τύπος (π.χ. int) ή μια κλάση (π.χ. String).
Το size είναι ο αριθμός των στοιχείων που θα χωρέσει αυτός ο πίνακας (ο οποίος δεν μπορεί να αλλάξει αργότερα).
Μετά τη δημιουργία του πίνακα, τα στοιχεία αρχικοποιούνται στις προεπιλεγμένες τιμές τους (συνήθως 0, false ή null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
Οι πίνακες μπορούν επίσης να οριστούν με μια συντομευμένη σημειογραφία που σου επιτρέπει και να δημιουργήσεις τον πίνακα και να ορίσεις την τιμή του:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Καθώς ο μεταγλωττιστής μπορεί πλέον να καταλάβει πόσα στοιχεία θα έχει ο πίνακας, το μήκος μπορεί να παραλειφθεί.
Τα στοιχεία ενός πίνακα μπορούν να ανατεθούν και να προσπελαστούν χρησιμοποιώντας τη σημειογραφία θέσης με αγκύλες:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Η προσπέλαση μιας θέσης που βρίσκεται έξω από τις έγκυρες θέσεις του πίνακα έχει ως αποτέλεσμα μια IndexOutOfBoundsException.
Μπορείς να χειριστείς τους πίνακες είτε καλώντας τις μεθόδους ή τις ιδιότητες ενός στιγμιοτύπου πίνακα, είτε χρησιμοποιώντας τις στατικές μεθόδους που ορίζονται στην κλάση Arrays (συνήθως χρησιμοποιούνται μόνο σε γενικό κώδικα).
Η ιδιότητα length περιέχει το μήκος ενός πίνακα.
Μπορείς να την προσπελάσεις ως εξής:
int arrayLength = someArray.length;
Η Java παρέχει επίσης μια χρήσιμη βοηθητική κλάση, τη java.util.Arrays, που έχει πολλές χρήσιμες μεθόδους για πίνακες (π.χ. Arrays.equals).
Η Java υποστηρίζει επίσης πολυδιάστατους πίνακες όπως int[][] arr = new int[3][4];, οι οποίοι μπορούν να φανούν πολύ χρήσιμοι.
Το γεγονός ότι ένας πίνακας είναι επίσης μια συλλογή σημαίνει ότι, εκτός από την προσπέλαση τιμών με θέση, μπορείς να διατρέξεις όλες τις τιμές του χρησιμοποιώντας έναν βρόχο for-each:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Αν θέλεις περισσότερο έλεγχο στο ποιες τιμές θα διατρέξεις, μπορείς να χρησιμοποιήσεις έναν βρόχο for:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei