Avatar billede halager Nybegynder
25. april 2002 - 11:45 Der er 11 kommentarer og
1 løsning

parseInt - valueOf

Er der nogen der kan forklare en BEGYNDER forskellen på:
m = Integer.parseInt(text);
og
m = Integer.valueOf(text).intValue();
Er det ene bedre end et andet?
MVH

Avatar billede lyhr007 Nybegynder
25. april 2002 - 11:51 #1
static int parseInt(String s)
          Parses the string argument as a signed decimal integer.
static int parseInt(String s, int radix)
          Parses the string argument as a signed integer in the radix specified by the second argument.


static Integer valueOf(String s)
          Returns a new Integer object initialized to the value of the specified String.
static Integer valueOf(String s, int radix)
          Returns a new Integer object initialized to the value of the specified String.


Tror ikke der er den store forskel herudover kan du også bruge en constructor der tager en string som agument.

Integer(String s)
          Constructs a newly allocated Integer object that represents the value represented by the string.
Avatar billede nute Nybegynder
25. april 2002 - 11:54 #2
Integer.valueOf(...).intValue(); er en tyngre operasjon siden 'Integer.valueOf(...)' oppretter et nytt objekt av typen 'Integer'. Denne måte kan også skrives på denne måte:

new Integer(Integer.parseInt(s)).

Integer.parseInt(...) er en lettere operarasjon siden ingen nye objekter opprettes...

/nute
Avatar billede lyhr007 Nybegynder
25. april 2002 - 11:55 #3
valueOf ->

Returns an Integer object holding the value extracted from the specified String when parsed with the radix given by the second argument. The first argument is interpreted as representing a signed integer in the radix specified by the second argument, exactly as if the arguments were given to the parseInt(java.lang.String, int) method. The result is an Integer object that represents the integer value specified by the string.
In other words, this method returns an Integer object equal to the value of:
new Integer(Integer.parseInt(s, radix))
Avatar billede nute Nybegynder
25. april 2002 - 12:00 #4
hmm....det var kanskje ikke særlig godt forklart :-|

'Integer.valueOf(...).intValue()' skal sees på som 2 operasjoner:

Integer newInt = Integer.valueOf( dinString )

alternativt

Integer newInt = new Integer( Integer.parseInt( sinString ) )

og

newInt.intValue()

lyhr007 >> enhver idiot kan lese hva som står i dokumentasjonen og evt copy/paste det inn i en debatt, men det er ikke alle som *forstår* hva som står i dokumentasjonen, og da har ikke ordene noen særlig hensikt ;-)

/nute
Avatar billede lyhr007 Nybegynder
25. april 2002 - 12:05 #5
han spørgsmål gik på om det ene var bedre end den anden.

Jeg copy/paste dokumentationen som "bevis" på mit svar til ham. Nemlig - at det er der ikke.

Han skriver selv at han er nybegynder og jeg har set mange som ikke kigger i javadoc'en eller ved at den findes :D
Avatar billede halager Nybegynder
25. april 2002 - 12:11 #6
Nu skrev jeg jo BEGYNDER med STORE bogstaver !!
Hvorfor er der to måder at gøre det samme på, hvori består forskellen i praksis.
Avatar billede jakoba Nybegynder
25. april 2002 - 12:11 #7
Det der returneres fra parseInt er blot et tal
    int mittal = parseInt( "25" );
Det der returneres fra Integer.valueOf er et objekt med et tal indeni. så når du siger:
    ind mitTal = Integer.valueOf( "25" ).intValue();
får du først oprettet et Integer objekt og derefter bliver det Objekt nedlagt igen forrdi intValue() ikke returnerer andet end talværdien i det.
Det er lidt spild af computerkraft sådan oprette og nedlægge et objekt når det ikke skal bruges til noget. så brug hellere parseInt.

mvh JakobA
Avatar billede halager Nybegynder
25. april 2002 - 12:16 #8
Jeg ved godt at javadoc'en findes det var faktisk der jeg øje på "valueOff"
Jeg kunne bare godt tænke mig at vide sådan skåret lidt ud i pap hvorfor der er to metoder at gøre det samme på. I min "lærebog" Deitel & Deitel "Java how to program" (den er ret ny) bruger de parseInt. Så undrer det mig at se det andet
Avatar billede lyhr007 Nybegynder
25. april 2002 - 12:18 #9
Mere uddybnede:

Java har nogle få simple typer, fordi det er "dyrt" at lave objecter.

Disse er dem der starter med små bogstaver: int, bool, double ...

Disse simple typer og også en Klasse/Object modpart.


Læs her for mere information: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html
Avatar billede lyhr007 Nybegynder
25. april 2002 - 12:18 #10
Disse simple typer og også en Klasse/Object modpart. -> Disse simple typer har også en Klasse/Object modpart.
Avatar billede halager Nybegynder
25. april 2002 - 12:22 #11
JakobA
Din forklaring er god og til at forstå, men hvorfor oprette et objekt og så nedlægge det igen, er der ikke et formål med det?
Avatar billede lyhr007 Nybegynder
25. april 2002 - 13:05 #12
parseInt returnere en simpletype int.
valueOf returnere en object Integer.

Derfor kommer det vel an på hvad man skal bruge den integer til.

Hvis man nu skal bruge den i en methode som skal have en int, er der ingen grund til at lave et Integer obejct hvorefter man tager int værdien fra det object og giver videre.

Men hvis methoden nu tager en Integer som agument, bliver man jo nød til at lave en int om til object og så kan man vel lige så godt gøre det først som sidst.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester