式と演算子式の仕組み通常、私たちの世界で「式」と言えば、数式を意味し、"1+2" のような形式を思い浮かべます。 Java の「式」の多くは、演算子:Operator と オペランド:Operand を組み合わせて構成されています。 例えば、先の "1+2" では "+" が演算子にあたり、"1" と "2" がオペランドにあたります。 式の値を出力する先の標準入出力を使用して、式の値を出力することができます。 下記のようなコードを入力します。
1 + 2は3です このように、変数に一旦格納することなく式の値を表示することができます。 また、計算式は ( ) で囲っておいてください。 演算子の種類Javaには、+演算子以外にもたくさんの演算子があります。 主な演算子の種類を 下記に紹介します。
以降、代表的な演算子について、例を交えて説明します。 文字列連結演算子+演算子は加算だけでなく、文字列を結合する役割もあります。 既に例でも示してきましたが、 System.out.println("num1+num2は" + (num1+num2) + "です"); "..."でくくられた文字列をオペランドとした場合には、+演算子は''文字列を結合 する''働きを持ちます。このとき、オペランドのどちらかが数値などであった場合には、 その数値は文字列に変換されて連結されます。 インクリメント・デクリメント演算子"++", "--" インクリメント・デクリメント演算子は、下記のように使用します。 a++; /* インクリメント */ b--; /* デクリメント */ インクリメントは、変数(オペランド)の値を1増やす演算のことです。 デクリメントとは、変数の値を1減らす演算のことです。 つまり、下記と等価であり、 結果は同じです。 a = a + 1; b = b - 1; また、インクリメント・デクリメント演算子は、オペランドの前に置く場合と、 後ろに置く場合があり、 処理が異なります。例えば、 int a = 0; b = a++; というような記述を行うと、b に 0 が代入された後、a の変数がインクリメントされます。 また、 int a = 0; b = ++a; と書くと、a の変数がインクリメントされた後に b に値が代入されるため、 b には 1 が代入されます。 代入演算子代入演算子は、遠陬に値を代入する際に使用していた「=」という記号のことです。 左辺の変数に右辺の値を代入する、という意味を持つ演算子です。 代入演算子は、「=」だけではなく、他の演算子を組み合わせたバリエーションもあります。
上記のような代入演算子は、他の演算と代入を同時に行うことができます。 例えば、 a += b; と書くと、変数 a の値に b を加算し、その値を a に代入します。 つまり、 a = a + b; と書くのと等価です。 また、+ と = の間に、空白を入れて記述しなければなりません。 シフト演算子「<<」「>>」「>>>」という記号で示した演算子を、シフト演算子と呼びます。 シフト演算子とは、数値を2進数で表した場合の桁を、左または右に指定数だけシフトする という演算のことです。 例えば、<< 演算子は左シフト演算子と呼ばれ、左辺を2進数で表記したときの値を、右辺で指定した 桁数分だけ左にずらし、はみ出した桁数だけ右から0を入れるという演算を行います。 「5」を2進数で表すと、 5 = 00000101 で表せます。2ビット左シフトさせると、 5 = 00000101 <<2 ――――――――――――――――― 20 = 00010100 となります。プログラムで書く場合は、 val = 5 << 2; また、左へ1ビットシフトすると元の数の2倍、右へ1ビットシフトすると元の数の 1/2倍になります。これは、10進数の数で考えると分かりやすいです。 演算子の優先順位優先順位通常、我々が行う計算にも乗除算から先に行う、といったように、Java の演算子にも優先順位が存在します。優先順位を変更するには () を使用します。 下記の表は、先の物が優先順位が高くなっています。
また、後置デクリメントと論理否定、前置デクリメントとオブジェクト生成、
キャストと乗算、剰算と加算、減算と左シフト、符号無し右シフトとより大きい、
型比較と等価、非等価と論理演算子全ては同じ優先順位です。 型変換例えば、double 型の変数の値を int 型の変数に代入するには、 型変換という処理を 行わなければなりません。 double dnum = 160.0; int inum; inum = dnum; と記述するだけでは、コンパイルできません。 型を変換することを明示的に書いておく必要があります。 このために、下記のような書式のキャスト演算子を使用します。 (型名) 式 キャスト演算子は、指定した式の型を、() 内で指定した型に変換するという 演算を行います。先の例では、 double dnum = 160.0; int inum; inum = (int)dnum; と書くことで、コンパイルできるようになります。 また、小数型の変数の値を整数型の変数に代入した場合、切り捨てられた整数となります。 小数から整数型へ変換する場合や、大きなサイズの型から小さなサイズの型へ変換する場合、 注意が必要です。 |