Το Στέκι των Πληροφορικών

Επαγγελματικό Λύκειο => Γενικά => Μήνυμα ξεκίνησε από: nikolasmer στις 04 Νοε 2018, 04:45:06 ΜΜ

Τίτλος: ParseInt() vs valueOf()
Αποστολή από: nikolasmer στις 04 Νοε 2018, 04:45:06 ΜΜ
Δεν είμαι σίγουρος ότι έχω καταλάβει τη διαφορά μεταξύ των δυο αυτών μεθόδων. Μπορεί κάποιος να μου δώσει τα φώτα του παρακαλώ; Πότε χρησιμοποιούμε τη μια και πότε την άλλη και για ποιο λόγο; Βασίζομαι στο παρακάτω παράδειγμα:

Κώδικας [Επιλογή]

class WrapperTest{
  public static void main(String args[])
  {
    int i = Integer.valueOf("2");
    System.out.println(i);
    int d = Integer.parseInt("5");
    System.out.println(d);
    System.out.println(i*d);
    Integer x = 5;
    Double y = 2.5;
    String s = x.toString() + y.toString();
    System.out.println(s);
    System.out.println(Integer.MAX_VALUE);
  }
}
Τίτλος: Απ: ParseInt() vs valueOf()
Αποστολή από: bugman στις 04 Νοε 2018, 05:42:49 ΜΜ
αντιγράφω από αλλού:
parseInt() returns primitive integer type (int), whereby valueOf returns java.lang.Integer, which is the object representative of the integer.

Έχει σημασία στη java αν ένα ακέραιο τον θέλουμε σε κανονική μορφή (primitive) ή σε αντικείμενο.
Με το int φτιάχνουμε κανονική μορφή, οπότε τα i και d είναι κανονικοί ακέραιοι, ενώ το x είναι αντικείμενο.
Τα αντικείμενα είναι συνδεδεμένα με τα ονόματα με δείκτες (ή όπως το λέει στη java by reference), δηλαδή θέλουν χώρο στην μνήμη για το δείκτη και χώρο για το αντικείμενο, όπου ο δείκτης δείχνει το αντικείμενο. Έτσι μπορείς να τα χρησιμοποιήσεις ως ακέραιους επειδή γυρνούν τιμή μέσα σε παραστάσεις. Όμως είναι αντικείμενα, έχουν μεθόδους. Ο απλός ακέραιος έχει έναν μόνο χώρο, εκεί που θα μπει ο αριθμός.
Το Integer.valueOf("2") γυρνάει αντικείμενο, αλλά επειδή το δίνεις σε απλό ακέραιο, το αντικείμενο απλά γυρνάει το νούμερο 2 και διαγράφεται (όταν το αποφασίσει το σύστημα). Το Integer.parseInt("5") γυρνάει άμεσα ακέραιο, οπότε αυτό δεν κάνει άσκοπα πράγματα, αφού σε απλό ακέραιο θα βάλουμε τη τιμή.


Τίτλος: Απ: ParseInt() vs valueOf()
Αποστολή από: nikolasmer στις 05 Νοε 2018, 12:11:31 ΠΜ
Ευχαριστώ για την απάντηση .