User Tools

Site Tools


java:arrays

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:arrays [2018/02/12 15:03] – [Πίνακες] gthanosjava:arrays [2022/02/23 15:35] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Πίνακες ====== ====== Πίνακες ======
  
-Οι πίνακες στην γλώσσα προγραμματισμού **Java** ορίζονται σε αναλογία με την **C** ως ένα σύνολο τιμών του ιδίου τύπου δεδομένων του οποίου ο αριθμός των μελών ορίζεται κατά την αρχικοποίηση του πίνακα. Η αρχικοποίηση ενός πίνακα γίνεται με χρήση του τελεστή **new**, σε μία δήλωση της μορφής+Οι πίνακες στην γλώσσα προγραμματισμού **Java** ορίζονται ως ένα σύνολο τιμών του ιδίου τύπου δεδομένων του οποίου ο αριθμός των μελών ορίζεται κατά την αρχικοποίηση του πίνακα. Η αρχικοποίηση ενός πίνακα γίνεται μέσω του τελεστή **new**, με μία δήλωση της μορφής
  
 <code java> <code java>
Line 16: Line 16:
  
 <WRAP tip 80% round center> <WRAP tip 80% round center>
-Σημειώστε ότι κατά σύμβαση προτιμάται η τοποθέτηση του τελεστή **[]** πριν το όνομα της μεταβλητής, και όχι μετά.+Προτιμάται η τοποθέτηση του τελεστή **[]** πριν το όνομα της μεταβλητής, και όχι μετά.
 </WRAP> </WRAP>
  
Line 61: Line 61:
 ===== Πίνακες αναφορικού τύπου ===== ===== Πίνακες αναφορικού τύπου =====
  
-Ας θεωρήσουμε το παρακάτω παράδειγμα κώδικα με βάση την κλάση Rectangle των προηγούμενων ενοτήτων.+Ας θεωρήσουμε το παρακάτω παράδειγμα κώδικα με βάση την κλάση **Rectangle** [[java:objects|της προηγούμενης ενότητας]].
  
-<code java CreateObjectDemo.java> +<code java CreateRectanglesArray.java> 
-public class CreateObjectDemo {+public class CreateRectanglesArray {
   public static void main(String[] args) {       public static void main(String[] args) {    
-    Rectangle [] rectangles = new Rectangle[4]; +    Rectangle [] rectangles = new Rectangle[4];
     Point originOne = new Point(23, 94);     Point originOne = new Point(23, 94);
-    Rectangle rectOne = new Rectangle(100200, originOne);+    Rectangle rectOne = new Rectangle(1020, originOne);
                
     rectangles[0] = rectOne;     rectangles[0] = rectOne;
-    rectangles[1] = new Rectangle(50, 100, new Point(5,10))+    rectangles[1] = rectOne; 
-    rectangles[2] = rectOne;+    rectangles[2] = new Rectangle(50, 100, new Point(5,10));
     rectangles[3] = new Rectangle(20, 30, new Point(-5, 7));     rectangles[3] = new Rectangle(20, 30, new Point(-5, 7));
          
     int i=0;     int i=0;
     for(Rectangle rectangle : rectangles) {     for(Rectangle rectangle : rectangles) {
-      System.out.println("rectangles["+(i++)+"]: "+rectangle.toString());+      System.out.println("rectangles["+(i++)+"]: "); 
 +      System.out.println("("+rectangle.getOrigin().getX()+","+rectangle.getOrigin().getY()+")\t"); 
 +      System.out.println("width: "+rectangle.getWidth()+", height: "+rectangle.getHeight());
     }     }
 +    
 +    rectangles[2] = rectangles[3];
   }   }
 +  
 } }
 </code> </code>
 +
 +Στον παραπάνω κώδικα στην γραμμή ''Rectangle [] rectangles = new Rectangle[4];'' δημιουργούμε ένα πίνακα από δείκτες σε αντικείμενα τύπου **Rectangle**. Αρχικά ο πίνακας έχει σε όλες τις θέσεις του την τιμή **null**. Στις επόμενες γραμμές αναθέτουμε αντικείμενα σε κάθε θέση του πίνακα. Οι θέσεις 0 και 1 του πίνακα δείχνουν στο ίδιο αντικείμενο στο οποίο δείχνει και η μεταβλητή **rectOne**.
 +
 +Εάν επιχειρήσουμε να σχεδιάσουμε το παραπάνω διάγραμμα αυτό θα δείχνει ως εξής:
 +
 +| Αρχικά δημιουργείται ένας πίνακας που όλα τα στοιχεία του είναι **null**.  | Στη συνέχεια δημιουργούμε αντικείμενα και τα αναθέτουμε σε κάθε θέση του πίνακα. Οι θέσεις 0 και 1 του πίνακα δείχνουν στο αντικείμενο που δείχνει και η μεταβλητή **rectOne**.  | Η ανάθεση του αντικειμένου της θέσης 3 στην θέση 2 αφαιρεί την αναφορά από το αντικείμενο με πλάτος 50 και ύψος 100. Εφόσον δεν υπάρχουν αναφορές προς αυτό, το αντικείμενο αυτό καταστρέφεται από τον [[java:objects#garbage_collection|Garbage Collector]]. Μαζί καταστρέφεται και το αντικείμενο τύπου Point στο οποίο δείχνει το πεδίο origin του αντικειμένου προς διαγραφή.  |
 +|  {{ :java:createrectangletable1.png?150 |}}  |  {{  :java:createrectangletable2.png?  |}}|  {{:java:createrectangletable3.png?  |}}  |
 +
  
 ===== Πίνακες δύο διαστάσεων ===== ===== Πίνακες δύο διαστάσεων =====
Line 113: Line 126:
 } }
 </code> </code>
 +
 +== Επεξήγηση του παραπάνω κώδικα ==
 +| ''names = new String[3][];'' | Αρχικά δεσμεύουμε ένα μονοδιάστατο πίνακα που τα στοιχεία του είναι μονοδιάστατοι πίνακες από [[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html|java.lang.String]]. |
 +| ''names[0] = new String[3]; names[1] = new String[5]; names[2] = new String[4];'' |Για κάθε θέση του παραπάνω πίνακα δεσμεύουμε ένα νέο μονοδιάστατο πίνακα από [[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html|java.lang.String]]. Οι νέοι πίνακες δεν έχουν απαραίτητα το ίδιο μέγεθος. |
  
  
-| Προηγούμενο: [[java:objects| Δημιουργία Αντικειμένων]] | [[:toc | Περιεχόμενα ]]   | Επόμενο: [[java:public_private_access_modifiers Περιορισμός της πρόσβασης με τους προσδιοριστές private και public]]  |+| Προηγούμενο: [[java:objects| Δημιουργία Αντικειμένων]] | [[:toc | Περιεχόμενα ]]   | Επόμενο: [[java:this_operator Ο τελεστής this]]  |
java/arrays.1518447821.txt.gz · Last modified: 2018/02/12 15:03 (external edit)