Ένα array είναι μια σταθερού μεγέθους, διατεταγμένη συλλογή στοιχείων του ίδιου τύπου, αποθηκευμένα συνεχόμενα στη μνήμη. Τα arrays είναι θεμελιώδη, αλλά το σταθερό τους μέγεθος σημαίνει ότι συχνά προτιμάτε το ArrayList για δυναμικές συλλογές.
Δήλωση και δημιουργία arrays
int[] nums = new int[5]; // size 5, default-initialized to 0
int[] nums2 = {1, 2, 3, 4, 5}; // declare + initialize with values
String[] names = new String[3]; // objects default to null
nums[0] = 10; // set by index (0-based)
int x = nums[0]; // get by index
nums.length; // 5 — the size (a field, NOT a method!)
Tα arrays έχουν σταθερό μέγεθος που καθορίζεται κατά τη δημιουργία — δεν μπορείτε να τα μεγαλώσετε ή να τα σμικρύνετε. Τα στοιχεία λαμβάνουν προκαθορισμένες τιμές κατάλληλες για τον τύπο (0, 0.0, false, null).
Κοινό λάθος: το length είναι πεδίο
nums.length; // ✅ array — a field (no parentheses)
str.length(); // ✅ String — a method (parentheses)
list.size(); // ✅ collection — a method
Το length του array είναι πεδίο· το length() της String και το size() της συλλογής είναι μέθοδοι — ένα συχνό σημείο σύγχυσης.
Έλεγχος ορίων
int[] arr = {1, 2, 3};
arr[5]; // ❌ ArrayIndexOutOfBoundsException — Java checks bounds at runtime
Η Java ρίχνει εξαίρεση για πρόσβαση εκτός ορίων (σε αντίθεση με τη C, η οποία έχει απροσδιόριστη συμπεριφορά) — πιο ασφαλές, αλλά πρέπει να μείνετε εντός 0 έως length-1.
Επανάληψη
// enhanced for-each (when you don't need the index)
for (int n : nums) {
System.out.println(n);
}
// traditional for (when you need the index)
for (int i = 0; i < nums.length; i++) {
nums[i] *= 2;
}
Πολυδιάστατα arrays
int[][] matrix = {{1, 2}, {3, 4}}; // array of arrays
matrix[0][1]; // 2
Arrays έναντι ArrayList — πότε να χρησιμοποιήσετε ποιο
Array → fixed size, slightly faster, can hold primitives directly (int[])
ArrayList → DYNAMIC size (grow/shrink), rich methods (add/remove/contains),
but holds objects only (Integer, not int)
List<Integer> list = new ArrayList<>();
list.add(1); // grows dynamically — no fixed size
list.remove(0);
Χρησιμοποιήστε ένα απλό array για σταθερό μέγεθος, κώδικα ευαίσθητο στην απόδοση ή πρωτόγενα δεδομένα· χρησιμοποιήστε ArrayList όταν το μέγεθος αλλάζει ή χρειάζεστε βολικές λειτουργίες.
Γιατί είναι σημαντικό
Tα arrays είναι μια θεμελιώδης δομή δεδομένων στη Java — γρήγορα, αποδοτικά σε μνήμη, συνεχόμενη αποθήκευση χρησιμοποιούμενη άμεσα και ως βάση για πολλές συλλογές (το ArrayList περιτυλίγει ένα array).
Η κατανόηση της σταθερής φύσης τους, της δεικτοδότησης με βάση το 0, του ελέγχου ορίων κατά τη διάρκεια εκτέλεσης, το λάθος του πεδίου length (έναντι μεθόδου) και ιδιαίτερα πότε να χρησιμοποιήσετε ένα array έναντι ArrayList (σταθερό/πρωτόγενο/γρήγορο έναντι δυναμικού/βολικού) είναι απαραίτητη.
Tα arrays εμφανίζονται συνεχώς σε αλγόριθμους και κώδικα κρίσιμο για απόδοση, ενώ η κατανόηση των περιορισμών τους (καμία αλλαγή μεγέθους) εξηγεί γιατί υπάρχουν δυναμικές συλλογές και συνήθως προτιμώνται για γενική χρήση.
