ParseInt() vs valueOf()

Ξεκίνησε από nikolasmer, 04 Νοε 2018, 04:45:06 ΜΜ

« προηγούμενο - επόμενο »

nikolasmer

Δεν είμαι σίγουρος ότι έχω καταλάβει τη διαφορά μεταξύ των δυο αυτών μεθόδων. Μπορεί κάποιος να μου δώσει τα φώτα του παρακαλώ; Πότε χρησιμοποιούμε τη μια και πότε την άλλη και για ποιο λόγο; Βασίζομαι στο παρακάτω παράδειγμα:

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() 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

Ευχαριστώ για την απάντηση .
Μερεντίτης Νικόλαος
Πληροφορικός