検索

キーワード


目次

【Java】ハンズオンセミナー用コード解説 トレーニング3 <複合代入演算子、インクリメント/デクリメント>

  • 公開日:2020-07-09 18:46:11
  • 最終更新日:2021-01-22 14:45:51
【Java】ハンズオンセミナー用コード解説 トレーニング3 <複合代入演算子、インクリメント/デクリメント>

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは、駆け出しプログラマーの若江です!

ここでは初学者として学習を終えた私が、アウトプットの意味も込めて複合代入演算子・インクリメント/デクリメント についてご紹介させていただきます。

できる限り初学者が理解しやすい内容として紹介させていただくので、参考となれば幸いです!


関連記事リンク:算術演算子と複合演算子の紹介 / 比較演算子、論理演算子、ビット演算子、シフト演算子の紹介

複合演算子

複合演算子とは代入演算子(=)に算術演算子(+, -, *, /)を組み合わせたもののことを指します。

さまざまな場面で扱うことになるので、ここでしっかりと押えておきましょう!


複合演算子の書き方

複合演算子は計算と代入をまとめて行うイメージで覚えておきましょう。

通常の計算式とは異なり、” a += 1” のように短く表記するのが特徴です。

これは " a = a + 1 (変数aに1を足した値)"と同じ意味になります。

まずは上記に従って、複合演算子を書いてみましょう。

//最初に初期値を設定します。(初期値がない場合はコンパイルエラーとなります)
int a = 0;

//次に「0」の値を持った「a」に対して「1」を足します。
a += 1;

//結果「a」が持つ値は「1」となります。
System.out.println(a);

※初期値とは変数(a)が何者なのか、最初に情報をセットしておくことです。


複合演算子の種類

複合演算子には和算(+)、減算(-)、乗算(*)、除算(/)の四則演算に加えて、余剰(%)の5つがあります。

この聞きなれない余剰とは、割り算をした結果の余りを値として渡します。

それぞれを複合演算子で表記すると以下のようになります。

和算:a += 1; → ("a = a + 1" と同じ意味)

減算:a -= 1; → ("a = a - 1" と同じ意味)

乗算:a *= 1; → ("a = a * 1" と同じ意味)

除算:a /= 1; → ("a = a / 1" と同じ意味)

余剰:a %= 1; → ("a = a % 1" と同じ意味)

//初期値
int a = 1;
//和算
a += 1;
//結果 a(1)に1を足して2となる
System.out.println(a);
//初期値
int a = 1;
//減算
a -= 1;
//結果 a(1)から1を引いて0となる
System.out.println(a);
//初期値
int a = 1;
//積算
a *= 1;
//結果 a(1)に1を掛けて1となる
System.out.println(a);
//初期値
int a = 1;
//除算
a /= 1;
//結果 a(1)を1で割って1となる
System.out.println(a);
//初期値
int a = 1;
//余剰
a %= 1;
//結果 a(1)を1で割った後の余り0となる
System.out.println(a);



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

複合代入演算子の和算、減算にはもう一つ別の顔があります。

前置、後置の概念を持つインクリメント演算子、ディクリメント演算子です。

・インクリメント演算子: ++

 変数の値を1増やします。" a++" と "a += 1" はほぼ同じ結果になります。

・ディクリメント演算子: --

 変数の値を1減らします。" a--" と "a -= 1" はほぼ同じ結果になります。


●前置/後置

先述での「ほぼ」同じ結果というのは、前置・後置に理由があります。

インクリメント演算子、ディクリメント演算子の「前置」「後置」には、

最終的な結果はどちらも同じですが、

変数を使う「前」に計算する(前置)か、変数を使った「後」に計算する(後置)かの差に特徴があります。

・++a :変数(a)よりも前にインクリメントが表記されているものを「前置」と言います。

・a++ :変数(a)よりも後にインクリメントが表記されているものを「後置」と言います。

前置、後置の比較を見てみましょう。

int a = 1;
//インクリメント(前置)結果:a(1)を表示する前に1足して2になります。
System.out.println(++a);
int a = 1;
//インクリメント(後置)結果:a(1)を表示した後に1足しますが、表示時点では"a = 1"なので結果は1が表示されます。
System.out.println(a++);
int a = 1;
//ディクリメント(前置)結果:a(1)を表示する前に1引いて0になります。
System.out.println(--a);
int a = 1;
//ディクリメント(後置)結果:a(1)を表示した後に1を引くため表示は1になります。
System.out.println(a--);


このようにインクリメント、ディクリメント共に瞬間の結果は異なりますが、

変数が最終的に保持する値は「++a」「a++」共に同じ「2」となります。


◆より分かりやすく比較するため和算を例に、

インクリメントの「前置」「後置」を使う場合と使わない場合の記述方法も確認しておきましょう。

//インクリメント(前置)を使った場合
int a = 1;
System.out.println(++a); //結果 = 2

//インクリメント(前置)を使わない場合の書き方 <表示前に1足す>
int a = 1;
a = a + 1;
System.out.println(a); //結果 = 2
//インクリメント(後置)を使った場合
int a = 1;
System.out.println(a++); //結果 = 1

//インクリメント(後置)を使わなかった場合の書き方 <表示後に1足す>
int a = 1;
System.out.println(a); //結果 = 1
a = a + 1;



まとめ

複合代入演算子はコーディングを簡単にする役割の他、

インクリメントやディクリメント、

前置・後置などがありどれも多く使われる演算子となります。


関連記事リンク

算術演算子と複合演算子の紹介 / 比較演算子、論理演算子、ビット演算子、シフト演算子の紹介




【著者】

若江

30代で異業種となるIT業界へ転職した駆け出しのプログラマです。これまで主に Java や Ruby、HTML/CSS を使って学習を目的としたショップサイトや掲示板サイトの作成を行いました。プログラマとしての経験が浅いからこそ、未経験者の目線に近い形で基礎の紹介をしていきたいと思います。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様