java:formatting

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:formatting [2015/03/10 11:06]
gthanos created
java:formatting [2015/03/10 14:57]
gthanos [Η Μέθοδος format]
Line 1: Line 1:
 ====== Μορφοποίηση Εξόδου ====== ====== Μορφοποίηση Εξόδου ======
  
-Τα stream ​αντικείμενα που εφαρμόζουν μορφοποίηση είναι περιπτώσεις είτε //​PrintWriter// ​(κλάση stream χαρακτήρων),​ ή //​PrintStream// ​(κλάση byte stream).+**Σημείωση:​** ​Τα μόνα //​PrintStream// ​αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα //​System.out//​ και //​System.err//​. Όταν χρειάζεται να δημιουργήσετε ένα διαμορφωμένο stream εξόδου, χρησιμοποιήστε //​PrintWriter//​και όχι ​//​PrintStream//​. ​
  
-**Σημείωση**:​ Τα μόνα //​PrintStream//​ αντικείμενα που είναι πιθανό να χρειαστείτε είναι τα //​System.out//​ και //​System.err//​. Όταν χρειάζεται να δημιουργήσετε ενα διαμορφωμένο stream εξόδου,​ χρησιμοποιήστε //​PrintWriter//,​ και όχι //​PrintStream//​.  +Όπως όλα τα αντικείμενα streams byte και χαρακτήρων,​ περιπτώσεις //​PrintStream//​ και //​PrintWriter//​ εφαρμόζουν ένα τυποποιημένο σύνολο μεθόδων εγγραφής για απλή έξοδο byte και χαρακτήρα. Επιπλέον,​ τόσο η //​PrintStream//​ όσο και η //​PrintWriter//​ εφαρμόζουν το ίδιο σύνολο μεθόδων για τη μετατροπή των εσωτερικών δεδομένων σε μορφοποιημένη έξοδο. Δύο δυνατότητες ​μορφοποίησης παρέχονται:​
- +
-Όπως όλα τα αντικείμενα streams byte και χαρακτήρων,​ περιπτώσεις //​PrintStream//​ και //​PrintWriter//​ εφαρμόζουν ένα τυποποιημένο σύνολο μεθόδων εγγραφής για απλή έξοδο byte και χαρακτήρα. Επιπλέον,​ τόσο η //​PrintStream//​ όσο και η //​PrintWriter//​ εφαρμόζουν το ίδιο σύνολο μεθόδων για τη μετατροπή των εσωτερικών δεδομένων σε μορφοποιημένη έξοδο. Δύο ​επίπεδα μορφοποίησης παρέχονται:​+
  
   * To //print// και //println// μορφοποιεί μεμονωμένες τιμές σε έναν τυποποιημένο τρόπο.   * To //print// και //println// μορφοποιεί μεμονωμένες τιμές σε έναν τυποποιημένο τρόπο.
-  * Το //format// μορφοποιεί σχεδόν οποιοδήποτε πλήθος τιμών βασισμένο σε ενα string μορφής, με πολλές επιλογές για την ακριβή μορφοποίηση.+  * Το //format// μορφοποιεί σχεδόν οποιοδήποτε πλήθος τιμών βασισμένο σε ένα string μορφοποίησης ανάλογο με αυτό της printf στην ​γλώσσα C.
  
 ==== Οι print και println Μέθοδοι ==== ==== Οι print και println Μέθοδοι ====
  
-Η κλήση των //print// ή //​println// ​εξάγει μια μοναδική ​τιμή ​αφού μετατρέψει την τιμή χρησιμοποιώντας την κατάλληλη μέθοδο ​//toString//. Μπορούμε να δούμε αυτό το παράδειγμα ​//Root//:+Η κλήση των //print// ή //​println// ​λαμβάνει ως όρισμα ένα String. Εάν υπάρχουν ορίσματα ​στις δύο ​αυτές μεθόδους που δεν είναι του τύπου String, ​τότε καλείται ​η μέθοδος ''​toString()'', ​προκειμένου ​να μετατραπούν τα ορίσματα σε String. Μπορείτε να δείτε το παρακάτω ​παράδειγμα:​
  
 <code java Root.java>​ <code java Root.java>​
Line 33: Line 31:
 </​code>​ </​code>​
  
-Αυτή είναι ​η έξοδος της Root:+Παρακάτω δίνεται το αποτέλεσμα της εκτέλεσης της κλάσης Root:
  
 <code java> <code java>
Line 39: Line 37:
 The square root of 5 is 2.23606797749979. The square root of 5 is 2.23606797749979.
 </​code>​ </​code>​
- 
-Οι μεταβλητές //i// και //r// διαμορφώθηκαν δύο φορές: την πρώτη φορά, χρησιμοποιώντας κώδικα σε μια υπερφόρτωση της print, τη δεύτερη φορά με κώδικα μετατροπής που δημιουργήθηκε αυτόματα από το μεταγλωττιστή της Java, ο οποίος επίσης χρησιμοποιεί την //​toString//​. Μπορείτε να διαμορφώσετε οποιαδήποτε τιμή με αυτόν τον τρόπο, αλλά εδώ δεν έχετε πολύ τον έλεγχο των αποτελεσμάτων. 
  
 ==== Η Μέθοδος format ==== ==== Η Μέθοδος format ====
  
-Η μέθοδος //format// μορφοποιεί πολλαπλά στοιχεία που βασίζονται σε ενα //string// μορφής. Το string ​μορφής αποτελείται από //static// κείμενο με ενσωματωμένα προσδιοριστικά μορφής. Εκτός των ​προσδιοριστικών ​μορφής, το string μορφής είναι αμετάβλητο της εξόδου. +Η μέθοδος //format// μορφοποιεί πολλαπλά στοιχεία που βασίζονται σε ενα //String// μορφοποίησης. Το String ​μορφoποίησης ​είναι ένα ​String ​που περιέχει προσδιοριστές μορφοποίησης. Το παράδειγμα //Root2// μορφοποιεί δύο τιμές με μία μόνο κλήση της //format//:
- +
-Τα //strings// μορφής υποστηρίζουν πολλές δυνατότητες. Εδώ, θα καλύψουμε μόνο κάποια βασικά. +
- +
-Το παράδειγμα //Root2// μορφοποιεί δύο τιμές με μία μόνο κλήση της //format//:+
  
 <code java Root2.java>​ <code java Root2.java>​
Line 61: Line 53:
 </​code>​ </​code>​
  
-Αυτή είναι η έξοδος:+έξοδος ​της κλάσης Root2 δίνεται παρακάτω
 <code java> <code java>
 The square root of 2 is 1.414214. The square root of 2 is 1.414214.
 </​code>​ </​code>​
  
-Όπως και τα τρία που χρησιμοποιούνται σε αυτό το παράδειγμα,​ όλα τα προσδιοριστικά ​μορφής αρχίζουν με ένα % και ​τελειώνουν με μια μετατροπή 1ή 2χαρακτήρων που καθορίζει το είδος της μορφοποιημένης εξόδου που παράγεται. ​Οι τρεις μετατροπές που χρησιμοποιήθηκαν εδώ είναι:+Όλα οι προσδιοριστές μορφοποίησης αρχίζουν με τον χαρακτήρα '%' ​και ​ακολουθούν 1 ή 2 χαρακτήρες που καθορίζει το είδος της μορφοποιημένης εξόδου που παράγεται. ​Παρακάτω δίνονται μερικές από τις πιο συνήθεις μετατροπές
 + 
 +  * το %d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή. 
 +  * το %f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή. 
 +  * το %n εισάγει έναν platform-specific χαρακτήρα αλλαγής γραμμής. 
 +  * το %x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή.  
 +  * το %s μορφοποιεί ένα String. 
 + 
 +Το σύνολο των προσδιοριστών μορφοποίησης δίνεται παρακάτω: 
 +{{:​java:​format.png}} 
 + 
 +Παρακάτω δίνεται δύο παραδείγματα χρήσης των σημαντικότερων προσδιοριστών μορφοποίησης που παρουσιάστηκαν παραπάνω. 
 + 
 +<code java MyFormat.java>​ 
 +public class MyFormat { 
 +    public static void main(String[] args) { 
 +        System.out.format("​%f,​ %1$+020.10f %n", Math.PI); 
 +    } 
 +
 +</​code>​ 
 + 
 +<code java TestFormat.java>​ 
 +import java.util.Calendar;​ 
 +import java.util.Locale;​ 
 + 
 +public class TestFormat { 
 +     
 +    public static void main(String[] args) { 
 +      long n = 461012; 
 +      System.out.format("​%d%n",​ n);      //  --> ​ "​461012"​ 
 +      System.out.format("​%08d%n",​ n);    //  --> ​ "​00461012"​ 
 +      System.out.format("​%+8d%n",​ n);    //  --> ​ " +461012"​ 
 +      System.out.format("​%,​8d%n",​ n);    // --> ​ " 461,​012"​ 
 +      System.out.format("​%+,​8d%n%n",​ n); //  --> ​ "​+461,​012"​ 
 +       
 +      double pi = Math.PI; 
 + 
 +      System.out.format("​%f%n",​ pi);       // --> ​ "​3.141593"​ 
 +      System.out.format("​%.3f%n",​ pi);     // --> ​ "​3.142"​ 
 +      System.out.format("​%10.3f%n",​ pi);   // --> ​ " ​    ​3.142"​ 
 +      System.out.format("​%-10.3f%n",​ pi);  // --> ​ "​3.142"​ 
 +      System.out.format(Locale.FRANCE,​ 
 +                        "​%-10.4f%n%n",​ pi); // --> ​ "​3,​1416"​ 
 + 
 +      Calendar c = Calendar.getInstance();​ 
 +      System.out.format("​%tB %te, %tY%n",​ c, c, c); // --> ​ "May 29, 2006"​ 
 + 
 +      System.out.format("​%tl:%tM %tp%n",​ c, c, c);  // --> ​ "2:34 am" 
 + 
 +      System.out.format("​%tD%n",​ c);    // --> ​ "​05/​29/​06"​ 
 +    } 
 +
 +</​code>​
  
-  * το d μορφοποιεί μια τιμή integer ως μια δεκαδική τιμή. 
-  * το f μορφοποιεί μια floating point τιμή ως μια δεκαδική τιμή. 
-  * το n εξάγει έναν platform-specific τερματιστή γραμμής . 
  
-Εδώ ​είναι κάποιες άλλες ​μετατροπές +|Προηγούμενο: [[:​java:​character_streams | Streams Χαρακτήρων]]| Επόμενο: [[:​java:​class_path | Η κλάση Path ]] |
  
-  * το x μορφοποιεί έναν integer ως μια δεκαεξαδική τιμή. ​ 
-  * το s μορφοποιεί κάθε τιμή σε ένα string. 
-  * το tB μορφοποιεί έναν integer σε ένα locale-specific όνομα μήνα. 
  
java/formatting.txt · Last modified: 2016/02/26 11:15 (external edit)