This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:arrays [2015/04/19 18:52] gthanos [Πίνακες] |
java:arrays [2016/02/18 11:37] doufexi added wrap re: positioning of [] in array def, added some spacing in code, added toc link |
||
---|---|---|---|
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> | ||
+ | Η αρίθμηση των στοιχείων του πίνακα ξεκινάει από τον δείκτη 0 και αυξάνει. Για παράδειγμα για ένα πίνακα 10 θέσεων, η αρίθμηση των στοιχείων του είναι **0-9**, όπως φαίνεται στο παρακάτω σχήμα. | ||
{{ :java:objects-tenelementarray.gif }} | {{ :java:objects-tenelementarray.gif }} | ||
- | Μπορείτε να δείτε ενδεικτικά το παρακάτω πρόγραμμα | + | Μπορείτε να δείτε ενδεικτικά το παρακάτω πρόγραμμα, όπου ορίζεται ένας πίνακας ακεραίων μεγέθους 3, ο πίνακας γεμίζει με τιμές και στη συνέχεια εκτυπώνονται τα περιεχόμενα του. |
<code java ArrayDemo.java> | <code java ArrayDemo.java> | ||
Line 20: | Line 37: | ||
anArray[2] = 300; | anArray[2] = 300; | ||
| | ||
- | for(int i=0; i<anArray.length; i++) { | + | for(int i=0; i < anArray.length; i++) { |
- | System.out.println("Element at index "+i+": "+ anArray[0]); | + | System.out.println("Element at index " + i + "/" + anArray.length+": " + anArray[0]); |
} | } | ||
} | } | ||
Line 28: | Line 45: | ||
<WRAP important 80% round center> | <WRAP important 80% round center> | ||
- | Οι πίνακες στη Java υλοποιούνται ως αντικείμενο. Κάθε αντικείμενο έχει ένα πεδίο **length** που αποθηκεύει το μέγεθος του πίνακα (π.χ. ''anArray.length'') και το οποίο δεν αλλάζει (final field). Μέσω του πεδίου length μπορείτε να έχετε πρόσβαση στο μέγεθος του κάθε πίνακα. | + | Οι πίνακες στη Java υλοποιούνται ως αντικείμενα (//θα τα δούμε αναλυτικά παρακάτω//). __Εφόσον αρχικοποιηθεί ένας πίνακας το μέγεθος του είναι σταθερό και δεν αλλάζει__. |
+ | |||
+ | Κάθε αντικείμενο πίνακα έχει ένα πεδίο **length** που αποθηκεύει το μέγεθος του πίνακα (π.χ. δείτε στο πρόγραμμα ''anArray.length'') και για το οποίο δεν μπορούμε να μεταβάλλουμε την τιμή του (δηλαδή είναι final field). Μέσω του πεδίου //length// μπορείτε να έχετε πρόσβαση στο μέγεθος του κάθε πίνακα. | ||
</WRAP> | </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 { | ||
Line 50: | Line 81: | ||
- | | [[java:variables | Μεταβλητές]] | [[java:operators | Τελεστές ]] | | + | | Προηγούμενο: [[java:variables | Μεταβλητές]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[java:operators | Τελεστές ]] | |