キーワード辞典
物凄く乱暴なJava for全商1級+

登録日 14/09/22   更新日 16/11/18



物凄く乱暴なJavaに関する用語(基本文法)

詳しくは公式マニュアルをお読みください。
Javaって、こんな風にも書ける、とか、こうとも言う、とか、色々有るので、 以下は雰囲気だけのざっくりとした説明です。
作成中です。ミス有ったら後免。


インクリメント/デクリメント演算子


a++
++ は、1を加算することをあらわす演算子。 a++ は、a=a+1 と同じ。
変数の値に1を加算していくことをインクリメントと言う。


a--
-- は、1を減算することをあらわす演算子。 a-- は、a=a-1 と同じ。
変数の値に1を減算していくことをデクリメントと言う。


[備考1] 後置演算 a++ と 前置演算 ++a

重要なので、備考2も必読のこと。
a++ の様に変数の後に演算子が来る様なものを「後置演算」、 ++a の様に変数の前に演算子が来る様なものを「前置演算」と言い、 単独で使う場合には結果は同じだが、 他の式と組み合わせて使用する場合は違いが有るので要注意。
a++は、aの値を取り出してから元のaをインクリメントするが、 ++aは、aの値をインクリメントしてから、その値を取り出す。

下の例はa++で後置演算なので、 aの値をbに代入した後、aに1を加算したことになり、aは3、bは2になる。
以下は、大雑把なイメージです。
※実際は、優先順位は、++が先、=は後。結果的に、そう見える、ということに注意。
int a = 2;		int a = 2;
int b = a++;	→	int b = a;
			a = a + 1;

++a の場合は、aに1を加算したものをaとしbに代入したことになり、aもbも3になる。
int a = 2;		int a = 2;
int b = ++a;	→	a = a + 1;
			int b = a;


[備考2] a=a++ は、何故アホなのか

a++は、aの値を取り出した後のインクリメントであり、 また、右辺の++は=よりも優先順位が高いため先に処理される。
上のa++の例をもう少し細かく書くと、以下の様になる。
以下はイメージです。
int a = 2;		int a = 2;
int b = a++;	→	int tmp = a;
			a = a + 1;
			int b = tmp;

アホなコードとしてプログラマでは有名な、
a = a++;
は、aの値は左辺へ代入されるが、 aのインクリメントは反映されない。結果としてaは変化しない。
以下はイメージです。
int a = 2;		int a = 2;
a = a++;	→	int tmp = a;
			a = a + 1;
			a = tmp;

a = ++a; は、左辺への代入が無効になるが、aのインクリメントはされるため、結果としてaは変化する。
int a = 2;		int a = 2;
a = ++a;	→	a = a + 1;
			a = a;		… 無効



ってか、

普通に、a++; って、書いてよ!








[ 黒板消しとチョーク受けの画像 ]