java:arrays

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:arrays [2018/02/12 15:03]
gthanos [Πίνακες]
java:arrays [2018/02/13 09:05]
gthanos [Πίνακες δύο διαστάσεων]
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());+      String str = "rectangles["+(i++)+"]: "; 
 +      str = str + "("+rectangle.getOrigin().getX()+","+rectangle.getOrigin().getY()+")\t"; 
 +      str = str + "width: "+rectangle.getWidth()+", height: "+rectangle.getHeight(); 
 +      System.out.println(str);
     }     }
 +    
 +    rectangles[2] = rectangles[3];
   }   }
 +  
 } }
 </code> </code>
 +
 +Στον παραπάνω κώδικα στην γραμμή ''Rectangle [] rectangles = new Rectangle[4];'' δημιουργούμε ένα πίνακα από δείκτες σε αντικείμενα τύπου **Rectangle**. Αρχικά ο πίνακας έχει σε όλες τις θέσεις του την τιμή **null**. Στις επόμενες γραμμές αναθέτουμε αντικείμενα σε κάθε θέση του πίνακα. Οι θέσεις 0 και 1 του πίνακα δείχνουν στο ίδιο αντικείμενο στο οποίο δείχνει και η μεταβλητή **rectOne**.
 +
 +Εάν επιχειρήσουμε να σχεδιάσουμε το παραπάνω διάγραμμα αυτό θα δείχνει ως εξής:
 +
 +|Αρχικά δημιουργείται ένας πίνακας που όλα τα στοιχεία του είναι **null**.  |Στη συνέχεια δημιουργούμε αντικείμενα και τα αναθέτουμε σε κάθε θέση του πίνακα. Οι θέσεις 0 και 1 του πίνακα δείχνουν στο αντικείμενο που δείχνει και η μεταβλητή **rectOne**.  |Η ανάθεση του αντικειμένου της θέσης 3 στην θέση 2 δημιουργεί ένα αντικείμενο για το οποίο δεν υπάρχει αναφορά. Το αντικείμενο αυτό καταστρέφεται από τον [[java:objects#garbage_collection|Garbage Collector]].  |
 +|  {{ :java:createrectangletable1.png?150 |}}  |  {{  :java:createrectangletable2.png?  |}}|  {{:java:createrectangletable3.png?  |}}  |
 +
  
 ===== Πίνακες δύο διαστάσεων ===== ===== Πίνακες δύο διαστάσεων =====
Line 113: Line 127:
 } }
 </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:public_private_access_modifiers | Περιορισμός της πρόσβασης με τους προσδιοριστές private και public]]  |
java/arrays.txt · Last modified: 2022/02/23 15:35 (external edit)