Du er her:
UiO >
Studier >
Emner >
MAT-INF1100 - Høst 2004
Litt om klasser, s�ig BigInteger
.
Innledning. Som nevnt i kompendiet har Java muligheter for �egne med vilk�ig store heltall. Slike utvidelser av funksjonaliteten gj�ved hjelp av klasser. Dere skal l� �krive egne klasser senere i INF 1000, men det �ruke klasser som andre har skrevet er ikke spesielt vanskelig. Det �unne bruke andres kode er i dag minst like viktig som det �unne skrive egen kode, og det �unne finne fram i klassebiblioteker er en grunnleggende ferdighet for en programmerer.
BigInteger
.
Klassen som inneholder koden for �egne med vilk�ig store heltall heter BigInteger
. Det f� du m�j�or �ruke denne klassen er �i
import java.math.BigInteger;
�t p�rogramfila slik at du f�lastet inn koden som definerer BigInteger
. Dette gir deg tilgang p�n ny datatype som heter BigInteger
i tillegg til de innebygde s�om long, int, double, float
etc. Om du n�ier
BigInteger a;
vil variabelen a
bli reservert til �nneholde BigInteger
-tall.
Tilordning av verdier. Hvis vi n�ar sagt BigInteger a
, hvordan kan vi tilordne verdier til a
? Vi kunne pr�ss med a=2
, men det g�ikke bra siden Java tolker h�iden som en int
og det er umulig �agre en int
i en BigInteger
-variabel. For ��il dette m�i alts��t eller annet vis konvertere tallet 2 til en BigInteger
. P�ebsiden til SUN om BigInteger
(se under "Info om Java" under "Ressurser" p�jemmesida) finner vi, litt nede p�iden, en overskrift som heter "Method Summary". Mot slutten av dette avsnittet finner vi en boks som sier
valueOf(long�val)
����������Returns a BigInteger whose value is equal to that of the specified long.
Dette betyr at vi kan legge inn 2 som en BigInteger
i a
ved �i
a = BigInteger.valueOf(2);
Her blir 2 konvertert til long
(det skjer automatisk n�det er behov for det) og metoden valueOf
lager en BigInteger
som representerer tallet 2 for oss. Notasjonen BigInteger.valueOf
leses "BigInteger sin valueOf" og er n�dig for �ortelle Java hvor metoden valueOf
er �inne (det kan tenkes at det ogs�r andre klasser som har en metode med det samme navnet).
Operasjoner p�code>BigInteger. La oss n�age oss en annen variabel og legge tallet 3 inn der
b = BigInteger.valueOf(3);
Hvordan kan vi n�ultiplisere eller addere sammen a
og b
? Vi kan pr� si a*b
, men da f�vi beskjed om at operasjonen *
ikke er definert for BigInteger
-variable. Hvis vi i steden ser gjennom lista av metoder p�ebsida over, s�inner vi en metode som ser ut til �unne hjelpe oss, nemlig
multiply(BigInteger�val)
����������Returns a BigInteger whose value is (this * val).
P�amme m� som valueOf
er dette en metode som er assosiert med BigInteger
. Hvis c
er en tredje variabel av typen BigInteger
kan vi derfor utf�ultiplikasjonen ved �i
c = a.multiply(b);
I tabellen over metoder finner vi blant annet ogs�p>
subtract(BigInteger�val)
add(BigInteger�val)
����������Returns a BigInteger whose value is (this + val).
divide(BigInteger�val)
����������Returns a BigInteger whose value is (this / val).
��������� Returns a BigInteger whose value is (this - val).
samt mange andre nyttige metoder.
Et fullstendig program.
La oss n�krive et fullstendig program som multipliserer sammen to BigInteger
-variable.
import java.math.BigInteger;
class bigtest {
public static void main (String [ ] args) {
BigInteger a, b, c;
a = BigInteger.valueOf(2);
b = BigInteger.valueOf(3);
c = a.multiply(b);
System.out.println("c=" + c);
}
}
Vi trenger selvsagt ikke BigInteger
for �ultiplisere sammen s�m�all, men dette eksempelet burde illustrere bruken av BigInteger
. Et litegrann st�eksempel som beregner 500! finner du her.
Redaksjon: Knut M�
Dokument endret: 14. oktober 2004