Αποστολέας Θέμα: ParseInt() vs valueOf()  (Αναγνώστηκε 1438 φορές)

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 571
  • There can be only one...may it be AEPP.
ParseInt() vs valueOf()
« στις: 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);
  }
}
Μερεντίτης Νικόλαος
Πληροφορικός

bugman

  • Επισκέπτης
Απ: ParseInt() vs valueOf()
« Απάντηση #1 στις: 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") γυρνάει άμεσα ακέραιο, οπότε αυτό δεν κάνει άσκοπα πράγματα, αφού σε απλό ακέραιο θα βάλουμε τη τιμή.



nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 571
  • There can be only one...may it be AEPP.
Απ: ParseInt() vs valueOf()
« Απάντηση #2 στις: 05 Νοε 2018, 12:11:31 πμ »
Ευχαριστώ για την απάντηση .
Μερεντίτης Νικόλαος
Πληροφορικός