Περισσότερα
Java int σε Συμβολοσειρά - Integer.toString(i) vs new Integer(i).toString()
Μερικές φορές η java με προβληματίζει.
Έχω να κάνω έναν τεράστιο αριθμό αρχικοποιήσεων int.
Ποια είναι η πραγματική διαφορά;
Integer.toString(i)
new Integer(i).toString()
419
3
Η
Integer.toString
καλεί τη στατική μέθοδο της κλάσηςInteger
. Δεν χρειάζεται ένα παράδειγμα τηςInteger
.Αν καλέσετε την
new Integer(i)
δημιουργείτε ένα instance του τύπουInteger
, το οποίο είναι ένα πλήρες αντικείμενο της Java που ενθυλακώνει την τιμή του int σας. Στη συνέχεια, καλείτε τη μέθοδοtoString
σε αυτό για να του ζητήσετε να επιστρέψει μια αναπαράσταση του αυτού του εαυτού του με συμβολοσειρά.Αν το μόνο που θέλετε είναι να εκτυπώσετε ένα
int
, θα χρησιμοποιούσατε το πρώτο, επειδή είναι πιο ελαφρύ, πιο γρήγορο και δεν χρησιμοποιεί επιπλέον μνήμη (εκτός από την επιστρεφόμενη συμβολοσειρά).Αν θέλετε ένα αντικείμενο που αναπαριστά μια ακέραια τιμή -για να την τοποθετήσετε μέσα σε μια συλλογή για παράδειγμα- θα χρησιμοποιούσατε το δεύτερο, αφού σας δίνει ένα ολοκληρωμένο αντικείμενο για να κάνετε όλα τα είδη των πραγμάτων που δεν μπορείτε να κάνετε με ένα γυμνό
int
.Το
new Integer(i).toString()
δημιουργεί πρώτα ένα (περιττό) αντικείμενο περιτύλιξης γύρω από τοi
(το οποίο μπορεί να είναι ένα αντικείμενο περιτύλιξηςInteger
).Το
Integer.toString(i)
προτιμάται επειδή δεν δημιουργεί περιττά αντικείμενα.new Integer(i).toString();
Αυτή η εντολή δημιουργεί το αντικείμενο του Integer και στη συνέχεια καλεί τις μεθόδους του
toString(i)
για να επιστρέψει την αναπαράσταση String της τιμής του Integer's.Integer.toString(i);
επιστρέφει το αντικείμενο String που αναπαριστά τον συγκεκριμένο int (ακέραιο), αλλά εδώ η
toString(int)
είναι μιαστατική
μέθοδος.Περίληψη είναι ότι στην πρώτη περίπτωση επιστρέφει την αναπαράσταση των αντικειμένων με συμβολοσειρά, ενώ στη δεύτερη περίπτωση επιστρέφει την αναπαράσταση του ακέραιου αριθμού με συμβολοσειρά.