Vanligtvis i en grafiskt användargränssnitt, kommer det att finnas textfält som förväntar sig att användaren ska ange ett numeriskt värde. Detta talvärde hamnar i en Sträng objekt som inte verkligen hjälper ditt program om du vill göra lite aritmetik. Lyckligtvis finns det omslagsklasser som tillhandahåller metoder för att konvertera dessa strängvärden till siffror och String-klassen har en metod för att konvertera dem tillbaka igen.
Inslagningskurser
De primitiva datatyper som handlar om siffror (dvs byte, int, dubbel, flottör, lång och kort) har alla klassekvivalenter. Dessa klasser är kända som omslagsklasser eftersom de tar en primitiv datatyp och omger den med funktionaliteten i en klass. Till exempel kommer dubbelklassen att ha ett dubbelvärde som dess data och tillhandahålla metoder för att manipulera det värdet.
Alla dessa omslagsklasser har en metod som heter valueOf. Den här metoden tar en sträng som ett argument och returnerar en instans av omslagsklassen. Låt oss till exempel säga att vi har en sträng med värdet tio:
Strängnummer = "10";
Att ha detta nummer som en sträng är inte till nytta för oss så vi använder klassen Integer för att konvertera det till ett heltal-objekt:
Heltal konverterat nummer = heltal.värde av (antal);
Nu kan numret användas som ett nummer och inte som en sträng:
konverterade nummer = konverterade nummer + 20;
Du kan också få konverteringen att gå direkt till en primitiv datatyp:
int convertNumber = Heltal.valueOf (nummer) .intValue ();
För andra primitiva datatyper slår du bara in rätt omslagsklass - Byte, Heltal, Dubbel, Float, Long Short.
Notera: Du måste se till att strängen kan tolkas i lämplig datatyp. Om det inte kan du sluta med ett runtime-fel. Att till exempel försöka hämta "tio" till ett heltal:
Strängnummer = "tio";
int convertNumber = Heltal.valueOf (nummer) .intValue ();
kommer att producera en NumberFormatException eftersom kompilatorn inte har någon aning om att "tio" ska vara 10.
Mer subtilt samma fel kommer att inträffa om du glömmer att en "int" bara kan innehålla hela siffror:
Strängnummer = "10,5";
int convertNumber = Heltal.valueOf (nummer) .intValue ();
Kompilatorn kommer inte att avkorta antalet, det kommer bara att tro att det inte passar in i ett "int" och att det är dags att kasta en NumberFormatException.
Konvertera siffror till strängar
Att göra ett nummer till en sträng följer samma typ av mönster som strängklassen har ett värdeOf-metod också. Det kan ta något av de primitiva datatypnumren som ett argument och producera en sträng:
int-nummerTio = 20;
Sträng konverterad = String.valueOf (numberTwenty);
vilket sätter "20" som strängvärdet för co nverted.
eller så kan du använda toString-metoden i någon av omslagsklasserna:
Sträng konverterad = heltal.toString (antalTio);
ToString-metoden är gemensam för alla objekttyper - för det mesta är det bara en beskrivning av objektet. För omslagsklasser är denna beskrivning det verkliga värdet de innehåller. I denna riktning är konverteringen lite mer robust. Om dubbelklassen skulle användas istället för heltalet:
Sträng konverterad = Double.toString (numberTwenty);
resultatet skulle inte orsaka a körtidsfel. Den konverterade variabeln skulle innehålla strängen "20.0".
Det finns också ett mer subtilt sätt att konvertera siffror när du är sammankoppling strängar. Om en sträng skulle byggas som:
String aboutDog = "Min hund är" + nummerTio + "år gammal.";
konverteringen av int-numretTio görs automatiskt.