こんにちは!なるーらぼです。前回はGroovyにおける変数、定数、オブジェクトについてお話ししてきました。今回は数値オブジェクトについて着目してお話ししていくとともに、演算子についても少しかじっていきましょう。
数値オブジェクト
Groovyにおいて数値オブジェクトはJavaと同じものです。ひとつだけ大きく違うのは何もせずとも、変数の扱う値が一定以上を超えるとBigIntegerやBigDecimalといった型へ変換されることでしょう。
整数
10進数であれば、変数に「1」などと代入してやることでオブジェクトを生成することができます。では、それ以外はどうでしょうか?2進数では先頭を「0b」ではじめるとリテラルとして扱うことができます。
def aaa = 0b01010
8進数ではゼロのみではじめると扱うことができます。
def bbb = 0123
16進数ではほかのプログラミング言語と同じですかね。「0x」ではじめます。
def ccc = 0x1234
小数
Groovyにおける小数はJavaと同じくfloat、double、BigDecimalになります。指数表現を使うときには小文字か大文字の「e」に続けて数値を記述することで実現できます。
def ddd = 2e4+1
def eee = 1.23e-4
なお、小数のときは2進数、8進数、16進数で表現することができません。
アンダースコアリテラル
千円単位、などで3桁ずつにカンマで区切るような書き方をしますが、こうした表現をアンダースコア記号をつかって実現することができます。圧倒的に大きな数値リテラルが読みやすくなりますね。
def aaa = 123_456_789
def tel = 090_1234_5678 // 電話番号090-1234-5678
def bit = 0x7fff_ffff_ffff // ビットマスクなど
数値型サフィックス
これもJavaにありますが、Groovyにおいては「def」キーワードを使っていても数値型に型を強制することができるという強制力もあります。
なお、サフィックスをつけずに小数リテラルをつかうと、BigDecimalになります。
計算してみよう
さて、一通り数値オブジェクトのお話しをしたので、今度は計算してみることにしましょう。計算には演算子を使います。といっても四則演算は普通の「+」「-」「*」「/」で足し算、引き算、掛け算、割り算ができます。
ひとつだけ注意が必要なのは、整数の割り算を行う場合には「/」演算子の代わりに「intdiv()」メソッドを使ってください。
割り算をした余りを求めるには「%」、指数計算(~の○乗)をするには「**」を使います。単項演算子として、「+」「-」は数値の正負を反転することができます。
そのほか、インクリメントやデクリメントのための「++」「--」もあります。前に置くか後ろに置くかで演算してから参照するか、参照してから演算するかの違いがあるほか、後の回で説明しますクロージャ内では前に配置することはできません。
def a = 1
println a++ // 1と表示
println a // 2と表示
println(--a) // 1と表示
他のプログラミング言語と同様な代入演算子もあります。イコール記号に続いて算術演算子を使うと代入演算子になります。
def a = 1
a += 3 // 4
a -= 1 // 3
a *= 4 // 12
a /= 2 // 6
a %= 4 // 2
a **= 3 // 8
最後に
今回は数値オブジェクトと、それを計算するための演算子についてお話ししました。ところで、これらの演算子は実はすべて数値オブジェクトのメソッドです。対応表を以下へ示しますので、活用してください。
0コメント