Java int σε Συμβολοσειρά - Integer.toString(i) vs new Integer(i).toString()

Μερικές φορές η java με προβληματίζει.
Έχω να κάνω έναν τεράστιο αριθμό αρχικοποιήσεων int.

Ποια είναι η πραγματική διαφορά;

  1. Integer.toString(i)
  2. new Integer(i).toString()
Λύση

Η Integer.toString καλεί τη στατική μέθοδο της κλάσης Integer. Δεν χρειάζεται ένα παράδειγμα της Integer.

Αν καλέσετε την new Integer(i) δημιουργείτε ένα instance του τύπου Integer, το οποίο είναι ένα πλήρες αντικείμενο της Java που ενθυλακώνει την τιμή του int σας. Στη συνέχεια, καλείτε τη μέθοδο toString σε αυτό για να του ζητήσετε να επιστρέψει μια αναπαράσταση του αυτού του εαυτού του με συμβολοσειρά.

Αν το μόνο που θέλετε είναι να εκτυπώσετε ένα int, θα χρησιμοποιούσατε το πρώτο, επειδή είναι πιο ελαφρύ, πιο γρήγορο και δεν χρησιμοποιεί επιπλέον μνήμη (εκτός από την επιστρεφόμενη συμβολοσειρά).

Αν θέλετε ένα αντικείμενο που αναπαριστά μια ακέραια τιμή -για να την τοποθετήσετε μέσα σε μια συλλογή για παράδειγμα- θα χρησιμοποιούσατε το δεύτερο, αφού σας δίνει ένα ολοκληρωμένο αντικείμενο για να κάνετε όλα τα είδη των πραγμάτων που δεν μπορείτε να κάνετε με ένα γυμνό int.

Σχόλια (0)

Το new Integer(i).toString() δημιουργεί πρώτα ένα (περιττό) αντικείμενο περιτύλιξης γύρω από το i (το οποίο μπορεί να είναι ένα αντικείμενο περιτύλιξης Integer).

Το Integer.toString(i) προτιμάται επειδή δεν δημιουργεί περιττά αντικείμενα.

Σχόλια (0)
  1. new Integer(i).toString();

Αυτή η εντολή δημιουργεί το αντικείμενο του Integer και στη συνέχεια καλεί τις μεθόδους του toString(i) για να επιστρέψει την αναπαράσταση String της τιμής του Integer's.

  1. Integer.toString(i);

επιστρέφει το αντικείμενο String που αναπαριστά τον συγκεκριμένο int (ακέραιο), αλλά εδώ η toString(int) είναι μια στατική μέθοδος.

Περίληψη είναι ότι στην πρώτη περίπτωση επιστρέφει την αναπαράσταση των αντικειμένων με συμβολοσειρά, ενώ στη δεύτερη περίπτωση επιστρέφει την αναπαράσταση του ακέραιου αριθμού με συμβολοσειρά.

Σχόλια (1)