Typisk i en grafisk brugerflade, vil der være tekstfelter, der forventer, at brugeren indtaster en numerisk værdi. Denne talværdi ender med a Snor objekt, som ikke rigtig hjælper dit program, hvis du vil lave noget aritmetisk. Heldigvis findes der indpakningsklasser, der giver metoder til konvertering af disse strengværdier til tal, og strengklassen har en metode til at konvertere dem tilbage igen.
Indpakningskurser
Det primitive datatyper der handler om tal (dvs. byte, int, dobbelt, flyder, lang og kort) har alle klasseækvivalenter. Disse klasser er kendt som indpakningsklasser, da de tager en primitiv datatype og omgiver den med en klasses funktionalitet. For eksempel har dobbeltklassen en dobbeltværdi som dens data og tilvejebringer metoder til at manipulere denne værdi.
Alle disse indpakningsklasser har en metode, der kaldes valueOf. Denne metode tager en streng som et argument og returnerer en forekomst af indpakningsklassen. Lad os for eksempel sige, at vi har en streng med værdien af ti:
String nummer = "10";
At have dette nummer som en streng bruges ikke for os, så vi bruger klassen Integer til at konvertere det til et heltal-objekt:
Heltal konverteret nummer = Heltal.værdiOf (tal);
Nu kan tallet bruges som et nummer og ikke som en streng:
konverteret nummer = konverteret antal + 20;
Du kan også få konverteringen til at gå direkte til en primitiv datatype:
int convertNumber = Integer.valueOf (tal) .intValue ();
For andre primitive datatyper skal du bare indspille den korrekte indpakningsklasse — Byte, Heltal, Dobbelt, Flyt, Lang Short.
Bemærk: Du skal sørge for, at strengen kan parses i den passende datatype. Hvis det ikke kan du ende med en runtime-fejl. For eksempel at prøve at konvertere "ti" til et heltal:
String nummer = "ti";
int convertNumber = Integer.valueOf (tal) .intValue ();
producerer en NumberFormatException, fordi kompilatoren ikke har nogen idé om, at "ti" skal være 10.
Mere subtil vil den samme fejl opstå, hvis du glemmer, at en 'int' kun kan indeholde hele tal:
String nummer = "10.5";
int convertNumber = Integer.valueOf (tal) .intValue ();
Compileren vil ikke beskære antallet, den vil bare tro, at det ikke passer ind i et 'int', og at det er tid til at smide en NumberFormatException.
Konvertering af numre til strenge
For at oprette et tal til en streng følger den samme slags mønster, som strengklassen har også en værdiOf-metode. Det kan tage et hvilket som helst af de primitive datatypenumre som et argument og producere en streng:
int antal Tyve = 20;
Streng konverteret = String.valueOf (antalTyve);
hvilket sætter "20" som strengværdien for co-vendt.
eller du kan bruge toString-metoden i en af indpakningsklasserne:
Streng konverteret = Integer.toString (antalTyve);
ToString-metoden er fælles for alle objekttyper - for det meste er det kun en beskrivelse af objektet. For indpakningsklasser er denne beskrivelse den aktuelle værdi, de indeholder. I denne retning er konverteringen lidt mere robust. Hvis dobbeltklassen skulle bruges i stedet for heltalet:
Streng konverteret = Double.toString (antalTyve);
resultatet ville ikke forårsage en runtime error. Den konverterede variabel vil indeholde strengen "20.0".
Der er også en mere subtil måde at konvertere tal på, når du er sammenkædning af strenge. Hvis en streng skulle bygges som:
String aboutDog = "Min hund er" + nummerT tyve + "år gammel.";
konverteringen af int-nummeret Tyve udføres automatisk.