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を返します。 |