This shows you the differences between two versions of the page.
Next revision | Previous revision Next revision Both sides next revision | ||
java:arrays [2015/02/06 13:59] gthanos created |
java:arrays [2016/02/24 09:48] gthanos |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Πίνακες ====== | ====== Πίνακες ====== | ||
- | Οι πίνακες στην γλώσσα προγραμματισμού Java ορίζονται σε αναλογία με την C ως ένα σύνολο τιμών του ιδίου τύπου δεδομένων του οποίου ο αριθμός των μελών είναι προαποφασισμένος και δεν αλλάζει. | + | Οι πίνακες στην γλώσσα προγραμματισμού **Java** ορίζονται σε αναλογία με την **C** ως ένα σύνολο τιμών του ιδίου τύπου δεδομένων του οποίου ο αριθμός των μελών ορίζεται κατά την αρχικοποίηση του πίνακα. Η αρχικοποίηση ενός πίνακα γίνεται με χρήση του τελεστή **new**, σε μία δήλωση της μορφής |
+ | |||
+ | <code java> | ||
+ | int [] anArray; | ||
+ | anArray = new int[5]; | ||
+ | int anotherArray[]; | ||
+ | anotherArray = new int[10]; | ||
+ | ή | ||
+ | int [] anArray = new int[5]; | ||
+ | int anotherArray[] = new int[10]; | ||
+ | </code> | ||
+ | |||
+ | Ο παραπάνω κώδικας ορίζει δύο πίνακες τύπου **int** μεγέθους **5** και **10** αντίστοιχα. Παρατηρήστε ότι κατά τον ορισμό του πίνακα ο τελεστής **[]** μπορεί να τοποθετηθεί πριν ή μετά το όνομα της μεταβλητής. | ||
+ | |||
+ | <WRAP tip 80% round center> | ||
+ | Σημειώστε ότι κατά σύμβαση προτιμάται η τοποθέτηση του τελεστή **[]** πριν το όνομα της μεταβλητής, και όχι μετά. | ||
+ | </WRAP> | ||
+ | |||
+ | Εναλλακτικά, μπορείτε να ορίσετε το μέγεθος του πίνακα ορίζοντας και τα περιεχόμενα του στην δήλωση ορισμού του, όπως στο παρακάτω παράδειγμα: | ||
+ | <code java> | ||
+ | int[] numbers = {1,2,3,4,5,6,7,8,9,10}; | ||
+ | </code> | ||
+ | |||
+ | Η αρίθμηση των στοιχείων του πίνακα ξεκινάει από τον δείκτη 0 και αυξάνει. Για παράδειγμα για ένα πίνακα 10 θέσεων, η αρίθμηση των στοιχείων του είναι **0-9**, όπως φαίνεται στο παρακάτω σχήμα. | ||
{{ :java:objects-tenelementarray.gif }} | {{ :java:objects-tenelementarray.gif }} | ||
- | Μπορείτε να δείτε ενδεικτικά το παρακάτω πρόγραμμα | + | Μπορείτε να δείτε ενδεικτικά το παρακάτω πρόγραμμα, όπου ορίζεται ένας πίνακας ακεραίων μεγέθους 3, ο πίνακας γεμίζει με τιμές και στη συνέχεια εκτυπώνονται τα περιεχόμενα του. |
<code java ArrayDemo.java> | <code java ArrayDemo.java> | ||
class ArrayDemo { | class ArrayDemo { | ||
- | public static void main(String[] args) { | + | public static void main(String[] args) { |
- | // declares an array of integers | + | // declares an array of integers |
- | int[] anArray; | + | int[] anArray; |
- | // allocates memory for 10 integers | + | // allocates memory for 10 integers |
- | anArray = new int[3]; | + | anArray = new int[3]; |
- | | + | |
- | anArray[0] = 100; | + | anArray[0] = 100; |
- | anArray[1] = 200; | + | anArray[1] = 200; |
- | anArray[2] = 300; | + | anArray[2] = 300; |
- | + | ||
- | System.out.println("Element at index 0: " | + | for(int i=0; i < anArray.length; i++) { |
- | + anArray[0]); | + | System.out.println("Element at index " + i + "/" + anArray.length+": " + anArray[i]); |
- | System.out.println("Element at index 1: " | + | |
- | + anArray[1]); | + | |
- | System.out.println("Element at index 2: " | + | |
- | + anArray[2]); | + | |
} | } | ||
+ | } | ||
} | } | ||
</code> | </code> | ||
+ | <WRAP important 80% round center> | ||
+ | Οι πίνακες στη Java υλοποιούνται ως αντικείμενα (//θα τα δούμε αναλυτικά παρακάτω//). __Εφόσον αρχικοποιηθεί ένας πίνακας το μέγεθος του είναι σταθερό και δεν αλλάζει__. | ||
+ | |||
+ | Κάθε αντικείμενο πίνακα έχει ένα πεδίο **length** που αποθηκεύει το μέγεθος του πίνακα (π.χ. δείτε στο πρόγραμμα ''anArray.length'') και για το οποίο δεν μπορούμε να μεταβάλλουμε την τιμή του (δηλαδή είναι final field). Μέσω του πεδίου //length// μπορείτε να έχετε πρόσβαση στο μέγεθος του κάθε πίνακα. | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP tip 80% round center> | ||
+ | Κατεβάστε και εκτελέστε το παραπάνω πρόγραμμα. Παρατηρήστε ότι η κλήση της μεθόδου **System.out.println** εκτυπώνει στην κονσόλα σας ένα αλφαριθμητικό κατά την εκτέλεση του προγράμματος ακολουθούμενο από χαρακτήρα αλλαγής γραμμής. Εναλλακτικά της **System.out.println** μπορείτε να χρησιμοποιείτε και την μέθοδο **System.out.print**, όπου ο χαρακτήρας αλλαγής γραμμής παραλείπεται. | ||
+ | </WRAP> | ||
===== Πίνακες δύο διαστάσεων ===== | ===== Πίνακες δύο διαστάσεων ===== | ||
- | Δείτε το παρακάτω πρόγραμμα που περιέχει ένα πίνακα δύο διαστάσεων. __Η ιδιαιτερότητα της Java σε σχέση με την C είναι ότι μπορούμε να έχουμε διαφορετικό μήκος στηλών σε κάθε γραμμή__. | + | Οι πίνακες δύο διαστάσεων ορίζονται σε αναλογία με τους πίνακες μίας διάστασης ως εξής: |
+ | |||
+ | <code java> | ||
+ | int [][] anArray; | ||
+ | anArray = new int[3][5]; | ||
+ | ή | ||
+ | int [][] anArray = new int[3][5]; | ||
+ | </code> | ||
+ | |||
+ | Το παραπάνω παράδειγμα ορίζει ένα πίνακα διαστάσεων **3x5**. __Η ιδιαιτερότητα της Java σε σχέση με την C είναι ότι μπορούμε να έχουμε διαφορετικό αριθμό στηλών σε κάθε γραμμή του πίνακα__. Δείτε το παρακάτω πρόγραμμα που περιέχει ένα πίνακα δύο διαστάσεων. Στην πρώτη γραμμή του πίνακα έχουμε 3 στοιχεία, ενώ στην 2η δύο στοιχεία. | ||
<code java MultiDimArrayDemo.java> | <code java MultiDimArrayDemo.java> | ||
class MultiDimArrayDemo { | class MultiDimArrayDemo { | ||
- | public static void main(String[] args) { | + | public static void main(String[] args) { |
- | String[][] names = { | + | String[][] names = { |
- | {"Mr. ", "Mrs. ", "Ms. "}, | + | {"Mr. ", "Mrs. ", "Ms. "}, |
- | {"Smith", "Jones"} | + | {"Smith", "Jones"} |
- | }; | + | }; |
- | // Mr. Smith | + | // Mr. Smith |
- | System.out.println(names[0][0] + names[1][0]); | + | System.out.println(names[0][0] + names[1][0]); |
- | // Ms. Jones | + | // Ms. Jones |
- | System.out.println(names[0][2] + names[1][1]); | + | System.out.println(names[0][2] + names[1][1]); |
- | } | + | } |
} | } | ||
</code> | </code> | ||
+ | | Προηγούμενο: [[java:variables | Μεταβλητές]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[java:operators | Τελεστές ]] | |