【Java】「式」と「文」と「式文」と。 パーフェクトJava学習感想文 その5
パーフェクトJavaを読んで改めてJavaを振り返り中。
眠い。
経緯については学習記録その1をご参照ください。
以下、学んだこと。
文・式とは
文とは(特徴)
- 単独で完結する言語要素
文の種類
制御文
ブロック文
宣言文
式文(空文を含む)
このうち終端にセミコロンを要求するのは
「宣言文」と「式文」だけ。
式の存在できる箇所
式の中のオペランド
文の中の構成要素(例えばif-else文の条件式)
式文
識別子も単独で書くと「式」。
だから、
Human taro = new Human(); Human tmp = taro;
の2つ目の式は、
=演算子において左オペランドがtmpという式、右オペランドがtaro という式。
代入演算子は左辺のオペランドを先に評価する。
変数を左辺値として評価すると、値の代入先としての場所を返す。
右辺を評価して得た評価値を、その場所に代入する動作となる。
左オペランドとなるか、右オペランドとなるかで評価結果が変わってくる。
非可換。
可換な演算子もある。+演算子(加算演算子)は可換。
=演算子(代入演算子)を使った式は、
変数の値を変えているので副作用のある式と言える。
式文(ExpressionStatement)
式の一部は終端にセミコロンをつけることで文になる。
これを式文という。
式文の種類
式文に出来る式は以下の種類がある
代入式
前置、後置のインクリメント・デクリメント式(i++など)
メソッド呼び出し式
new演算子を使ったオブジェクト生成式
だから、
int a = 10; a; a + 100;
の2行目、3行目はエラーになる。
2行目は単独で識別子を書いているので「式」だけれど、
式文にできる式ではない。
よってエラー。
3行目も「式」だけど式文にできる式ではない。
a = b + c;
がエラーにならないのは
式文(代入式)の中に式(加算式)が存在しており、
つまり、式の存在できる箇所に式が存在しているから。
おやすみなさい。