プログラムの流れの分岐
キーワード・識別子・演算子
ここでは、演算子を含めたプログラムの構成要素について説明していきます。
キーワード
if や else といった語句には、特別な意味が込められています。このような語句をキーワード(keyword)と呼ばれ、プログラム作成時に変数などの名前としては使えません。Javaのキーワードは、以下のようになっています。
abstract | assert | boolean | break | byte | case |
catch | char | class | const | continue | default |
do | double | else | enum | extends | final |
finally | float | for | goto | if | implements |
import | instanceof | int | interface | long | native |
new | package | private | protected | public | return |
short | static | strictfp | super | switch | syncronized |
this | throw | throws | transient | try | void |
volatile | while |
正式なキーワードではないですが、true、false、nullも準じてあります。
区切り子
キーワードは、1種の単語のようなものです。その単語を区切るために使われる記号が区切り子(separator)です。以下の9つが使用されます。
[ ] ( ) { } , : . |
識別子
識別子(identifier)とは、変数、ラベル、メソッド、クラスなどに与えられる名前のことです。名前は自由に設定できますが、以下の規則に従う必要があります。
- 識別子の1文字目は、次のいずれかでなければならない…いわゆる文字
- 識別子の2文字目以降は、次のいずれかでなければならない…いわゆる文字、数字
数字が使えるのは2文字目からであることを覚えておきましょう。また、キーワードに加えて、true と false と null も識別子として使うことができません。
Javaでは、Unicodeという文字コード体系を使うため、”いわゆる文字”にはアルファベットだけでなく漢字文字なども含みます。
リテラル
整数リテラル、浮動小数点リテラル、文字列リテラルなども、プログラムを構成する要素の1つです。
演算子
数多くの演算子(operator)を学習しましたが、以下にJavaで利用できる全演算子をまとめています。
優先順位 | 演算子 | 形式 | 名称 | 結合規則 |
1 | [ ] | x[y] | インデックス演算子 | 左 |
1 | ( ) | x(arg ) | メソッド呼び出し演算子 | 左 |
1 | . | x.y | メンバアクセス演算子 | 左 |
1 | ++ | x++ | 後置増分演算子 | 左 |
1 | — | x– | 後置減分演算子 | 左 |
2 | ++ | ++x | 前置増分演算子 | 右 |
2 | — | –x | 前置減分演算子 | 右 |
2 | + | +x | 単項 + 演算子 | 右 |
2 | – | -x | 単項 – 演算子 | 右 |
2 | ! | !x | 論理補数演算子 | 右 |
2 | ~ | ~x | ビット単位の補数演算子 | 右 |
3 | new | new | new 演算子 | 左 |
3 | ( ) | ( ) | キャスト演算子 | 左 |
4 | * | x * y | 乗除演算子 | 左 |
4 | / | x / y | 乗除演算子 | 左 |
4 | % | x % y | 乗除演算子 | 左 |
5 | + | x + y | 加減演算子 | 左 |
5 | – | x – y | 加減演算子 | 左 |
6 | << | x << y | シフト演算子 | 左 |
6 | >> | x >> y | シフト演算子 | 左 |
6 | >>> | x >>> y | シフト演算子 | 左 |
7 | < | x < y | 関係演算子 | 左 |
7 | > | x > y | 関係演算子 | 左 |
7 | <= | x <= y | 関係演算子 | 左 |
7 | >= | x >= y | 関係演算子 | 左 |
7 | instanceof | x instanceof y | instanceof演算子 | 左 |
8 | == | x == y | 等価演算子 | 左 |
8 | != | x != y | 等価演算子 | 左 |
9 | & | x & y | ビット論理積演算子 | 左 |
10 | ^ | x ^ y | ビット排他的論理和演算子 | 左 |
11 | | | x | y | ビット論理和演算子 | 左 |
12 | && | x && y | 論理積演算子 | 左 |
13 | || | x || y | 論理和演算子 | 左 |
14 | ? : | x ? y : z | 条件演算子 | 左 |
15 | = | x = y | 単純代入演算子 | 右 |
15 | *= | x *= y | 複合代入演算子 | 右 |
15 | /= | x /= y | 複合代入演算子 | 右 |
15 | %= | x %= y | 複合代入演算子 | 右 |
15 | += | x += y | 複合代入演算子 | 右 |
15 | -= | x -= y | 複合代入演算子 | 右 |
15 | <<= | x <<= y | 複合代入演算子 | 右 |
15 | >>= | x >>= y | 複合代入演算子 | 右 |
15 | >>>= | x >>>=y | 複合代入演算子 | 右 |
15 | &= | x &= y | 複合代入演算子 | 右 |
15 | ^= | x ^= y | 複合代入演算子 | 右 |
15 | |= | x |= y | 複合代入演算子 | 右 |
優先度
演算子の一覧表は、先頭側の方が優先度(precedence)が高くなるように表記しています。たとえば、乗除算を行う * と / が、加減算を行う + や – より優先度が高いのは、日常での計算法則と同じです。よって、
a + b * c
は、(a + b) * c ではなく、 a + (b * c)と解釈されます。
+演算子よりも優先度が低い演算子を文字列の連結時に使用する時は、( )が必要になることに注意しよう。
結合規則
同じ優先度の演算子が連続する時に左右どちらかの演算を先に行うかを示すのが、結合規則(associativity)です。例えば、2項演算子を○とした場合、式 a ○ b ○ c を
(a ○ b) ○ c 左結合
とみなすのが左結合の演算子であり、
a ○ (b ○ c) 右結合
とみなすのが右結合の演算子です。
代入式の評価
原則として式は、その値を評価することができるので、代入式であってもその評価を行うことができます。次のことは必ず覚えましょう。
- 代入式を評価すると、代入後の左オペランドの型と値が得られる。
例えば、変数xがint型であれば、代入式 x = 5 を評価して得られるのは、代入後の左オペランドでxの型と値である「int型の5」になります。
以上でプログラムの分岐、構成要素については終わりです。次からは、プログラムの流れの繰り返しを説明していきます。