※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
こんにちは。こんぶです。
今日も、演算子について学んでいきましょう!
私の自己紹介等は、こちらからどうぞ。
また、Javaの学習を最初から進めていきたい方は、Java-1から見てみてくださいね。
複合代入演算子
前回説明した代入演算子の種類で複雑なものを「複合代入演算子」といいます。代入演算子は「=」でしたが、複合代入演算子は記号がセットになります。
代表的な複合代入演算子を6つ紹介します。(※優先順位の数字は、15段階で、1が最優先です)
「+=」演算子の機能は「左辺と右辺を加算して左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。※算術演算子の「+」使用
「-=」演算子の機能は「左辺から右辺を減算し左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。
「*=」演算子の機能は「左辺と右辺を乗算し左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。
「/=」演算子の機能は「左辺と右辺を除算し、左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。
「%=」演算子の機能は「左辺と右辺を除算し、その余りを左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。
「+=」演算子の機能は「左辺の後に右辺を連結して左辺に代入」で、Javaの優先順位は「15」で、評価の方向は「左←右」です。※文字列結合演算子の「+」使用
代入演算子も複合代入演算子も「=」記号が入りますが、「=」記号が入るものはJavaの優先順位は「15」で、評価の方向は「左←右」になるので、演算子と機能の違いを特に覚えておきましょう!
優先順位が「15」で最後になるので、代入は最後に行われることになります。
例えば、次のように使用します。
「+=」演算子(算術演算子「+」使用)の例:「a += 5;」のように使用し、意味としては「a = a + 5;」と同じです。
「+=」演算子(文字列結合演算子「+」使用)の例:「a += “こんぶ” ;」のように使用し、意味としては「a = a + “こんぶ” ;」と同じです。
インクリメント演算子・デクリメント演算子
変数の値に1だけ足したり引いたりする場合には、別の記述方法もあります。
「値を1増やす」演算子を「インクリメント演算子」といい、記号は「++」で、Javaの優先順位は「1」、評価の方向は「左→右」です。
「値を1減らす」演算子を「デクリメント演算子」といい、記号は「– –」で、Javaの優先順位は「1」、評価の方向は「左→右」です。
例えば、「a++;」のように使用し、意味としては「a = a + 1;」や「a += 1;」と同じです。
インクリメント演算子とデクリメント演算子は、左右両方にはオペランドを持っていないので、1つしかオペランドを持ちません。オペランドを1つしか持っていない演算子を「単項演算子」ともいいます。
便利ではあるのですが、注意点があります。
基本的には「++a」と「a++」(もしくは「- -a」と「a- -」)は同じなのですが、他の演算子と一緒に利用する場合、違う結果になってしまうことがあります。
次の例を見ながら説明していきます。
「++a」は前置インクリメントともいい、先に1増やしてから他の処理(代入や表示など)を行いますが、「a++」は後置インクリメントともいい、先に他の処理(代入や表示など)を行ってから1増やすため、結果が異なってしまいます。
ちなみに「- -a」は前置デクリメント、「a- -」は後置デクリメントともいいます。
他の演算子と一緒に利用すると、1増やす(もしくは1減らす)タイミングが変わってしまい、バグの原因にもなりやすいため、できるだけ単独で使用するようにしましょう。(例:「a++;」)
今回のまとめ
★「+=」演算子の機能は「左辺と右辺を加算して左辺に代入」※算術演算子の「+」使用
★「-=」演算子の機能は「左辺から右辺を減算し左辺に代入」
★「*=」演算子の機能は「左辺と右辺を乗算し左辺に代入」
★「/=」演算子の機能は「左辺と右辺を除算し、左辺に代入」
★「%=」演算子の機能は「左辺と右辺を除算し、その余りを左辺に代入」
★「+=」演算子の機能は「左辺の後に右辺を連結して左辺に代入」※文字列結合演算子の「+」使用
★「インクリメント演算子」の機能は「値を1増やす」で、記号は「++」、Javaの優先順位は「1」、評価の方向は「左→右」
★「デクリメント演算子」の機能は「値を1減らす」で、記号は「– –」、Javaの優先順位は「1」、評価の方向は「左→右」
★インクリメント演算子とデクリメント演算子は、他の演算子と一緒に利用すると1増やす(もしくは1減らす)タイミングが変わってしまうため、単独で使用する
・複合代入演算子:代入演算子の種類で、複雑なもの
・単項演算子:オペランドを1つしか持っていない演算子
・インクリメント演算子:値を1増やす演算子
・デクリメント演算子:値を1減らす演算子
演算子の種類が多いので大変だったと思いますが、お疲れさまでした。
インクリメント演算子とデクリメント演算子の1増やす(もしくは1減らす)タイミングは、こんぶも理解するのに時間がかかりました。みなさんも1度では分からない部分もあると思いますので、何度も復習して理解していきましょう!
次回は、型変換の仕組みについて説明していこうと思います。
今回の内容のチャレンジ問題はこちらです→チャレンジ問題【Java-10】
次の内容に進む方はこちらです→【Java-11】計算の文⑥型変換
それでは、こんぶはじゃ~
コメント