どうもこんにちは!
サバ缶(@tech_begin)です。
前回、定数について学びました。
まだ理解が浅いという方は、ぜひこちらもご覧ください。
さて、今回は変数や定数を使って「計算」をしてみましょう!
コンピュータにおける計算処理について
コンピュータは「電子計算機」とも呼ばれる通り、計算することが得意です。
四則演算はもちろんですが、文字などの結合も計算処理を使って行っています。
Webサイトの表示やアニメーション表示なども、全て計算処理を行って出力しています。
コンピュータが関わる目にしているもの全ての大元が、計算処理になんですね。
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = a + b;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
頭の体操がてら、上の処理結果がどのようになるか考えてみましょう!
※答えは、この記事の最後に書いています。
式の構成要素
ここからは、基礎中の基礎となる部分を学んでいきます。
先述の例から抜粋してきます。
int a = 10;
int b = 20;
int c = a + b;
4行目のような「c = a + b」を「式(expression)」と呼びます。
この式は2つの構成要素があります。
どんなに複雑な計算処理でも、以下の2つだけで構成されています。
- オペランド(operand)
- 計算に使われる値のこと
- 「a」「b」「10」
- 演算子(operator)
- オペランドを使って計算を行う機能を持つ記号
- 「=」「+」「-」「/」「*」
小学生レベルじゃん!
そうです。小学生の知識で行けちゃうんです。
ふつうの計算とは違う部分がいくつかあるので、そこだけ注意しましょう。
オペランド
オペランドは「データのこと」という認識で間違い無いですが、もっと詳しくみていきましょう。
リテラル
整数の「10」や文字列の「こんにちは」など、ソースコード上に記述されている値のことを リテラル(literal) と言います。
また、それぞれのリテラルは、データ型を保持しています。
リテラルの種類 | 表記例 | データ型 |
---|---|---|
整数 | 10 | int |
大きな整数(末尾がLまたはl) | 100000L | long |
精度の高い小数 | 10.2 | double |
精度の低い小数(末尾がFまたはf) | 10.2F | float |
trueまたはfalse | true | boolean |
引用符(‘)で囲まれた文字 | ‘機’ | char |
二重引用符(“)で囲まれた文字 | “こんにちは” | String |
ちなみに、以下のように『同じように見えて実は違うデータ』もあるので注意しましょう。
基本的には「’(シングルクォーテーション)」で囲まれていたら文字、「”(ダブルクォーテーション)」で囲まれていたら文字列という違いを知っておきましょう。
- 1 → 整数(int)
- ‘1’ → 文字(char)
- “1” → 文字列(String)
※文字は1文字しか保持しないデータ。文字列は複数文字を保持するデータです。
エスケープシーケンス
文字列(String型)や文字(char型)のリテラルを記述する際に用いられる
エスケープシーケンス(escape sequence) というのがあります。
「¥記号とそれに続く1文字」がセットになり記述されます。
// 「("」までを文字列と認識してしまい、コンパイルエラーとなる。
System.out.println("私は二重引用符(")が好きです")
// "を文字としてちゃんと認識してほしい場合は、「¥または\」を前に置く
System.out.println("私は二重引用符(\")が好きです")
表記 | 意味 |
---|---|
¥’ | 引用符記号(’) |
¥” | 二重引用符合(”) |
¥¥ | 円記号(¥) |
¥n | 改行文字 |
英語のフォントか日本語のフォントかによって表記が異なるだけなので、あまり気にしなくて問題ないです。
演算子
算術演算子
四則演算を行うためには、算術演算子という演算子を使用します。
小学生の頃から馴染みのある記号ばかりなので、比較的理解しやすいと思います!
表記 | 機能 | 優先順位 | 評価の方向 | 例 |
---|---|---|---|---|
+ | 加算 | 中(5) | 左→右 | 10 + 20 (30) |
– | 減算 | 中(5) | 左→右 | 30 – 10 (20) |
* | 乗算 | 高(4) | 左→右 | 5 * 10 (50) |
/ | 除算(整数演算では商) | 高(4) | 左→右 | 2.8 / 2 (1.4)、9 / 2 (4) |
% | 除算(余り) | 高(4) | 左→右 | 9 % 2 (1) |
文字列結合演算子
左右の文字列を結合し、1つの文字列にする演算子です。
算術演算子と同じ「+」を使います。
表記 | 機能 | 優先順位 | 評価の方向 | 例 |
---|---|---|---|---|
+ | 文字列連結 | 中(5) | 左→右 | 『”山田” + “太郎” (山田太郎)』『”りんごが” + 3 + “こあります” (りんごが3こあります)』 |
代入演算子
値を代入する時、基本的に「=」を使用します。
「+」などを使って加算する際、省略することも可能です。
その書き方を以下で紹介します。
表記 | 機能 | 優先順位 | 評価の方向 | 例 |
---|---|---|---|---|
= | 右辺を左辺に代入 | 最低(15) | 左←右 | a = 10(aの中身が10) |
+= | 加算し左辺に代入 | 最低(15) | 左←右 | a += 5(a = a + 5と同じ) |
-= | 減算し左辺に代入 | 最低(15) | 左←右 | a -= 5(a = a – 5と同じ) |
*= | 乗算し左辺に代入 | 最低(15) | 左←右 | a *= 5(a = a * 5と同じ) |
/= | 除算し左辺に代入 | 最低(15) | 左←右 | a /= 5(a = a / 5と同じ) |
%= | 除算した余りを左辺に代入 | 最低(15) | 左←右 | a %= 5(a = a % 5と同じ) |
+= | 文字列を連結して左辺に代入 | 最低(15) | 左←右 | a += “くん”(a = a + “くん”と同じ) |
インクリメント・デクリメント演算子
「+=」などの省略した書き方もできますが、ある条件下であれば
表記 | 機能 | 優先順位 | 評価の方向 | 例 |
---|---|---|---|---|
++ | 値を1増やす | 最高(1) | 左→右 | a++(a = a + 1と同じ) |
–(-を2つ並べる) | 値を1減らす | 最高(1) | 左→右 | a–(a = a – 1と同じ) |
ステップアップ
次はすこしだけ応用編に入りますよ。
ちなみに最初のコードの答えは「10 20 30」と改行されて表示されます!