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

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 543
  • 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

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 382
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: 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

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

Μερεντίτης Νικόλαος
Καθηγητής Πληροφορικής - Φροντιστής