Om UiO Studentliv 澳门葡京手机版app下载 For ansatte IT-tjenester Oppslagstavla Bibliotek | |
Du er her:
UiO >
澳门葡京手机版app下载 >
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