Integerクラス

Integerは、整数の値を格納できるオブジェクトのクラスです。格納できる整数の範囲に制限は無く、非常に桁数の大きな数でも誤差無しに格納することができます。Integerには四則演算やその他の様々なメソッドが用意されています。Integerの四則演算には「+」や「-」といった演算子は使えず、かわりに「add」「sub」といったメソッドを使用しなければなりません。

Integerへの変換.  Integerクラスのメソッドの引数などでは、Integer以外の値からIntegerへ自動的に変換される場合があります。そのような変換は次のような規則に則っておこなわれます。

Integerへの変換がエラーになった場合には例外が投げられます。

表 2. Integerクラス

機能書式説明
Integerオブジェクトの作成
new Integer()
新しくIntegerオブジェクトを作成します。作成されたIntegerの値は0になります。
Integerオブジェクトの作成
new Integer(x)
変数xの内容をもとにして新しくIntegerオブジェクトを作成します。変数xの値はIntegerに変換可能でなくてはなりません。
複製
x.clone()
Integerオブジェクトを複製して新しくIntegerオブジェクトを作成し、そのオブジェクトを返します。
代入
r.set(x)
変数xの値をrに代入します。変数xの値はIntegerに変換可能でなくてはなりません。
文字列へ変換
x.toString()
変数xの指すIntegerオブジェクトの値を文字列へ変換した値を返します。返される文字列は、そのIntegerオブジェクトの値の10進で表現された文字列です。
文字列へ変換
x.toString(base)
変数xの指すIntegerオブジェクトの値を文字列へ変換した値を返します。返される文字列は、引数baseで指定された進数で表現された文字列です。引数baseは2から36までの整数(またはそれに変換できる値)でなくてはなりません。
intに変換可能か調べる
x.fitsInt()
変数xの指すIntegerオブジェクトの値が、int型に収まる範囲の整数であるかどうかをテストし、収まる場合はtrueを、そうでない場合はfalseを返します。
intに変換する
x.toInt()
変数xの指すIntegerオブジェクトの値をintに変換し、その値を返します。値がintの範囲に収まらない場合は例外が投げられます。
符号を得る
x.sign()
変数xの指すIntegerオブジェクトの値が正、負、0の場合にそれぞれ1、-1、0を返します。
偶数かどうかテストする
x.isEven()
xが偶数の場合にはtrue、奇数の場合はfalseを返します。
奇数かどうかテストする
x.isOdd()
xが奇数の場合にはtrue、偶数の場合はfalseを返します。
比較
x.eq(y)
x.ne(y)
x.gt(y)
x.lt(y)
x.ge(y)
x.le(y)
xとyを比較し、それぞれ、等しい(eq)、異なる(ne)、xがyより大きい(gt)、xがyより小さい(lt)、xがy以上(ge)、xがy以下(le)のときにtrueを返し、そうでない場合はfalseを返します。yはIntegerに変換可能でなくてはなりません。
交換
x.swap(y)
xが指すIntegerオブジェクトの値と、yが指す先のIntegerオブジェクトの値を入れ替え、式の値としてx自身を返します。yはIntegerでなくてはなりません。
加算
x.add(y)
xとyの値を加算した結果をxに格納し、また式の値としてx自身を返します。yはIntegerに変換可能でなくてはなりません。
加算
r.add(x, y)
xとyの値を加算した結果をrに格納し、また式の値としてr自身を返します。xとyはIntegerに変換可能でなくてはなりません。
減算
x.sub(y)
xからyを減算した結果をxに格納し、また式の値としてx自身を返します。yはIntegerに変換可能でなくてはなりません。
減算
r.sub(x, y)
xからyを減算した結果をrに格納し、また式の値としてr自身を返します。xとyはIntegerに変換可能でなくてはなりません。
乗算
x.mul(y)
xとyの値を乗算した結果をxに格納し、また式の値としてx自身を返します。yはIntegerに変換可能でなくてはなりません。
乗算
r.mul(x, y)
xとyの値を乗算した結果をrに格納し、また式の値としてr自身を返します。xとyはIntegerに変換可能でなくてはなりません。
2の冪の乗算
x.mul2exp(y)
xに2のy乗を乗じた結果をxに格納し、また式の値としてx自身を返します。yはintに変換可能でなくてはなりません。
2の冪の乗算
r.mul2exp(x, y)
xに2のy乗を乗じた結果をrに格納し、また式の値としてr自身を返します。xはIntegerに変換可能でなくてはなりません。yはintに変換可能でなくてはなりません。
乗算と加算
r.addMul(x, y)
xとyの積にrを加えた結果をrに格納し、また式の値としてr自身を返します。xとyはIntegerに変換可能でなくてはなりません。
乗算と減算
r.subMul(x, y)
xとyの積をrから減算した結果をrに格納し、また式の値としてr自身を返します。xとyはIntegerに変換可能でなくてはなりません。
除算の商
x.div(y)
xをyで割った商をxに格納し、また式の値としてx自身を返します。除算が割り切れない場合には、商が整数になるように0に近い方向へ切捨てられます。yはIntegerに変換可能でなくてはなりません。yが0の場合は例外が投げられます。(この関数はtDivQ関数と完全に同一の機能を持ちます。簡単のためにのみ用意されています。)
除算の商
r.div(x, y)
xをyで割った商をrに格納し、また式の値としてr自身を返します。除算が割り切れない場合には、商が整数になるように0に近い方向へ切捨てられます。xとyはIntegerに変換可能でなくてはなりません。yが0の場合は例外が投げられます。(この関数はtDivQ関数と完全に同一の機能を持ちます。簡単のためにのみ用意されています。)
除算の剰余
x.mod(y)
xをyで割った剰余をxに格納し、また式の値としてx自身を返します。yの符号は無視され、結果は常に0以上y(の絶対値)未満の値になります。yが0の場合は例外が投げられます。(この関数はfDivR関数と完全に同一の機能を持ちます。簡単のためにのみ用意されています。)
除算の剰余
r.mod(x, y)
xをyで割った剰余をrに格納し、また式の値としてr自身を返します。yの符号は無視され、結果は常に0以上y(の絶対値)未満の値になります。yが0の場合は例外が投げられます。(この関数はfDivR関数と完全に同一の機能を持ちます。簡単のためにのみ用意されています。)
除算(truncate)
x.tDivQ(y)
x.tDivR(y)
x.tDivQR(re, y)
qu.tDivQ(x, y)
re.tDivR(x, y)
qu.tDivQR(re, x, y)
xをyで割り、商をquに、剰余をreにセットします。最初の3つの形式(quやreが省略された、引数の数が少ない形式)では商や剰余をx自身に返します。除算の結果が割り切れない場合は、商が0に近くなる方向へ切り捨てられます。除算の結果得られる商と剰余は「被除数=商×乗数+剰余」の関係を満たし、剰余は除数と同じ符号であるようなものになります。名前の末尾が「Q」のものは商だけを、「R」のものは剰余だけを計算し、「QR」のものは商と剰余の両方を計算します。商を格納するためのIntegerオブジェクトと、剰余を格納するためのIntegerオブジェクトが同一のオブジェクトであった場合にはエラーとなり、例外が投げられます。それ以外の引数はIntegerに変換できるものでなくてはなりません。除数が0の場合はエラーとなり、例外が投げられます。
除算(floor)
x.fDivQ(y)
x.fDivR(y)
x.fDivQR(re, y)
qu.fDivQ(x, y)
re.fDivR(x, y)
qu.fDivQR(re, x, y)
tDivQなどと同様ですが、商が負の無限大に近い方向へ切り下げられる点が異なります。除算の結果得られる商と剰余は「被除数=商×乗数+剰余」の関係を満たし、剰余は被除数と同じ符号であるようなものになります。
除算(ceil)
x.cDivQ(y)
x.cDivR(y)
x.cDivQR(re, y)
qu.cDivQ(x, y)
re.cDivR(x, y)
qu.cDivQR(re, x, y)
tDivQなどと同様ですが、商が正の無限大に近い方向へ切り上げられる点が異なります。除算の結果得られる商と剰余は「被除数=商×乗数+剰余」の関係を満たし、剰余は被除数と逆の符号であるようなものになります。
除算と四捨五入
x.divRoundHalfUp(y)
xをyで割り、その商を四捨五入した結果をxに格納します。また式の値としてx自身を返します。
除算と四捨五入
r.divRoundHalfUp(x, y)
xをyで割り、その商を四捨五入した結果をrに格納します。また式の値としてr自身を返します。
除算と偶数丸め
x.divRoundHalfEven(y)
xをyで割り、その商を偶数丸め(銀行式丸め、あるいはJIS丸めなどとも呼ばれる)によって丸めた結果をxに格納します。また式の値としてx自身を返します。
除算と偶数丸め
r.divRoundHalfEven(x, y)
xをyで割り、その商を偶数丸めによって丸めた結果をrに格納します。また式の値としてr自身を返します。
冪乗
x.pow(y)
xのy乗をxに格納します。また式の値としてx自身を返します。yはintに変換可能でなくてはなりません。
冪乗
r.pow(x, y)
xのy乗をrに格納します。また式の値としてr自身を返します。xはIntegerに変換可能でなくてはなりません。yはintに変換可能でなくてはなりません。
冪乗
r.pow(x, y)
xのy乗をrに格納します。また式の値としてr自身を返します。xはIntegerに変換可能でなくてはなりません。yはintに変換可能でなくてはなりません。
絶対値と符号の反転
x.abs()
x.neg()
r.abs(x)
r.neg(x)
absは与えられた値の絶対値を求め、negは与えられた値の符号を反転した値を求めます。最初の2つの形式(引数の無い形式)はxの絶対値や符号反転値をx自身に格納し、後ろの2つの形式(引数のある形式)はxの絶対値や符号反転値をrに格納します。後者の形式ではxはIntegerに変換可能でなくてはなりません。
最大公約数と最小公倍数
x.gcd()
x.lcm()
r.gcd(x)
r.lcm(x)
与えられた値の最大公約数(gcd)と最小公倍数(lcm)を求めます。最初の2つの形式(引数の無い形式)はxの最大公約数や最小公倍数をx自身に格納し、後ろの2つの形式(引数のある形式)はxの最大公約数や最小公倍数をrに格納します。後者の形式ではxはIntegerに変換可能でなくてはなりません。
ビットごとの論理積、論理和、排他的論理和、否定
x.bitAnd(y)
x.bitOr(y)
x.bitXor(y)
x.bitNot()
r.bitAnd(y)
r.bitOr(y)
r.bitXor(y)
r.bitNot(x)
Integerの値を2進表現したときのビット単位で論理積(and)、論理和(or)、排他的論理和(xor)、否定(not)を計算します。負の数は2の補数で表現されます。最初の4つの形式は計算結果をx自身に格納し、後ろの2角形式は計算結果をrに格納します。後者の形式ではxはIntegerに変換可能でなければなりません。またいずれの形式でも、yはIntegerに変換可能でなくてはなりません。
ビットごとの読み書き
x.setBit(y)
x.clearBit(y)
x.testBit(y)
Integerの値を2進表現したときの指定されたビットを読み書きします。負の数は2の補数で表現されます。setBitとclearBitはxの第yビットをそれぞれ1と0にし、式の値としてx自身を返します。testBitはxの第yビットを調べ、1であればtrueを、そうでないならfalseを返します。yはintに変換可能でなくてはなりません。yが負の数の場合は、setBitとclearBitはなにも書き換えずにxを返し、testBitはfalseを返します。