Συνήθως σε α γραφικό περιβάλλον διεπαφής χρήστη, θα υπάρχουν πεδία κειμένου που αναμένουν από τον χρήστη να εισαγάγει σε αριθμητική τιμή. Αυτή η τιμή αριθμού θα καταλήξει σε a Σειρά αντικείμενο που δεν βοηθά πραγματικά το πρόγραμμά σας εάν θέλετε να κάνετε κάποια αριθμητική. Ευτυχώς, υπάρχουν κατηγορίες περιτύλιξης που παρέχουν μεθόδους για τη μετατροπή αυτών των τιμών String σε αριθμούς και η κλάση String έχει μια μέθοδο για να τις μετατρέψει ξανά.
Μαθήματα περιτύλιξης
ο πρωτόγονων τύπων δεδομένων που ασχολούνται με τους αριθμούς (δηλαδή, byte, int, double, float, long και short) έχουν όλα ισοδύναμα τάξης. Αυτές οι κλάσεις είναι γνωστές ως κλάσεις περιτυλίγματος καθώς λαμβάνουν έναν πρωτόγονο τύπο δεδομένων και το περιβάλλουν με τη λειτουργικότητα μιας κλάσης. Για παράδειγμα, η κλάση Double θα έχει διπλή τιμή ως δεδομένα της και θα παρέχει μεθόδους για τον χειρισμό αυτής της τιμής.
Όλες αυτές οι κατηγορίες περιτυλίγματος έχουν μια μέθοδο που ονομάζεται valueOf. Αυτή η μέθοδος παίρνει μια συμβολοσειρά ως επιχείρημα και επιστρέφει μια εμφάνιση της κλάσης περιτυλίγματος. Για παράδειγμα, ας πούμε ότι έχουμε μια συμβολοσειρά με την τιμή των δέκα:
Αριθμός στοιχειοσειράς = "10";
Έχοντας αυτόν τον αριθμό ως String δεν είναι χρήσιμο για εμάς, ώστε να χρησιμοποιήσουμε την κλάση Ακέραιος για να το μετατρέψουμε σε ένα ακέραιο αντικείμενο:
Integer convertedNumber = Integer.valueOf (αριθμός);
Τώρα ο αριθμός μπορεί να χρησιμοποιηθεί ως αριθμός και όχι ως String:
convertedNumber = μετατρέψιμος αριθμός + 20;
Μπορείτε επίσης να πραγματοποιήσετε τη μετατροπή κατευθείαν σε έναν πρωταρχικό τύπο δεδομένων:
int convertedNumber = Integer.valueOf (αριθμός) .intValue ();
Για άλλους πρωτόγονους τύπους δεδομένων, απλά τοποθετείτε τη σωστή κατηγορία περιτύλιξης-Byte, Integer, Double, Float, Long Short.
Σημείωση: Πρέπει να βεβαιωθείτε ότι η συμβολοσειρά μπορεί να αναλυθεί στον κατάλληλο τύπο δεδομένων. Αν δεν μπορείτε να καταλήξετε σε ένα σφάλμα χρόνου εκτέλεσης. Για παράδειγμα, προσπαθώντας να αποκρύψετε το "δέκα" σε έναν ακέραιο αριθμό:
Αριθμός στοιχειοσειράς = "δέκα";
int convertedNumber = Integer.valueOf (αριθμός) .intValue ();
θα παράγει μια NumberFormatException επειδή ο μεταγλωττιστής δεν έχει ιδέα "δέκα" υποτίθεται ότι είναι 10.
Ακριβέστερα θα εμφανιστεί το ίδιο σφάλμα αν ξεχάσετε ότι ένα 'int' μπορεί να κρατήσει μόνο ακέραιους αριθμούς:
Αριθμός στοιχειοσειράς = "10,5";
int convertedNumber = Integer.valueOf (αριθμός) .intValue ();
Ο μεταγλωττιστής δεν θα περικόψει τον αριθμό που θα σκεφτεί απλά ότι δεν ταιριάζει σε ένα int και ότι ήρθε η ώρα να ρίξει μια NumberFormatException.
Μετατροπή αριθμών σε χορδές
Για να κάνετε έναν αριθμό σε ένα String ακολουθεί το ίδιο μοτίβο όπως και η κλάση String έχει και μια μέθοδο valueOf. Μπορεί να πάρει οποιονδήποτε από τους αρχέγονους αριθμούς τύπων δεδομένων ως επιχείρημα και να παράγει ένα String:
int numberTwenty = 20;
String converted = String.valueOf (numberTwenty);
που βάζει το "20" ως τιμή String του co nverted.
ή μπορείτε να χρησιμοποιήσετε τη μέθοδο toString οποιασδήποτε από τις κατηγορίες περιτυλίγματος:
Η συμβολοσειρά μετατράπηκε = Integer.toString (numberTwenty);
Η μέθοδος toString είναι κοινή σε όλους τους τύπους αντικειμένων - τις περισσότερες φορές είναι απλώς μια περιγραφή του αντικειμένου. Για τις κατηγορίες περιτυλίγματος, αυτή η περιγραφή είναι η πραγματική τιμή που περιέχουν. Σε αυτή την κατεύθυνση, η μετατροπή είναι λίγο πιο ισχυρή. Αν έπρεπε να χρησιμοποιηθεί η κλάση Double αντί του ακεραίου:
Έγχρωμη μετατρέπεται = Double.toString (numberTwenty);
το αποτέλεσμα δεν θα προκαλούσε α σφάλμα χρόνου εκτέλεσης. Η μετατρεπόμενη μεταβλητή θα περιέχει το String "20.0".
Υπάρχει επίσης ένας πιο λεπτός τρόπος για να μετατρέψετε τους αριθμούς όταν βρίσκεστε συγκολλώντας τις χορδές. Αν ένα String έπρεπε να κατασκευαστεί όπως:
String aboutDog = "Το σκυλί μου είναι" + αριθμόςTwenty + "ετών.";
η μετατροπή του int numberTwenty γίνεται αυτόματα.