TOP
プログラミング独学コンテンツ一覧
Javaで学ぶプログラミングの基本!式と文の構成について解説

Javaで学ぶプログラミングの基本!式と文の構成について解説

最終更新日
プログラミング学習をしていると頻繁に「式(expression)」という言葉が登場します。
よく「文(statement)」と混同しがちですが、以下のような違いがあります。
  • 式(expression) = 結果を返す部分
  • 文(statement) = 命令や手続きを記述するまとまり
実際のコードで表すと、以下のようになります。
このコンテンツでは、式を中心に文との違いに着目して解説していきます。また、同じタイミングで学ぶと効率的なので、演算子についても触れていきます。

文と式を例から読み取る

先ほど、文と式についてざっくり紹介しましたが、しっかり見ていきましょう。
まず、以下のコードを見てください。
Main.java
public class Main {
    public static void main(String[] args) {
        int base;
        int height;

        base = 10;
        height = base * 2; // base * 2の部分が「式」

        double area = (base * height) / 2; // (base * height) / 2の部分が「式」
        System.out.println("三角形の面積: " + area); // "三角形の面積: " + areaの部分が「式」
     }
}
これを分解すると、int base;int height;は変数宣言です。
これは変数宣言という「文」を表しており、他の行も基本的に1行に1文を表しています。
その中にあるbase * 2(base * height) / 2は、それぞれ変数に代入すべき結果を返しているため「式」と言えます。

式を構成するオペランドと演算子

それではさらに細かく見ていきます。
「式」は「オペランド(operand)」と「演算子(operator)」で構成されています。
例として、先ほどのコードのheight = base * 2;を分解してみます。以下のようにbase2はオペランドで、*は演算子です。

リテラルとは

オペランドは先ほどのようにbaseのような変数、2のような数値で紹介しましたが、それだけでなく「定数」「命令による実行結果」「リテラル」もあります。
「リテラル」とは、具体的な値を持ったデータのことを呼びます。先ほどの例だと2がリテラルにあたります。
他にも"Hello World!"のような文字列であったり、trueのような真偽値もリテラルです。
プログラミングの解説では、こういったリテラルを型名とともに「文字列リテラル」や「数値リテラル」などと呼ぶこともあります。

Javaによる式の評価

簡単に「文」と「式」の構成要素について理解したら、「評価(evaluation)」についても知っておくと良いでしょう。
プログラミングにおいて、計算処理することを「評価」と言います。学校の成績や他人からのどう見えるか、といった意味と少しニュアンスが違うので注意してください。
たとえば、1 + 2 + 3は評価されることによって6になります。
なお、この式は1 + 2 + 33 + 3と評価され、その後に6という結果が生まれます。当たり前のようですが、この計算処理こそがプログラミングを構成する最重要な機能だと考えてください。

演算子による評価の優先順位

式の評価については単純な計算ということは先述しましたが、一点注意しておきたいのが演算子による優先順位があるということです。
例として、以下のコードを見てみましょう。
Main.java
public class Main {
    public static void main(String[] args) {
        final int total = 1 + 2 * 5;
        System.out.println("合計は: " + total);
     }
}

//=> 出力結果は11
このように、1 + 2 * 5はそのまま順番で見ていくと3 * 5となり、結果は15のように感じますが、実際には2 * 5が先に評価されるため結果は11です。
中学校のときに数学で習ったように、乗算(掛け算)のほうが早く計算されます。
すべてをここで紹介すると長くなってしまうため別のコンテンツで紹介しますが、評価には優先順位が存在することは理解しておきましょう。

評価の方向

式の評価には、さらに方向が存在します。
どういうことかと言うと、以下のコードを見てください。
Main.java
public class Main {
    public static void main(String[] args) {
        int x;
        int y;
        x = y = 10;
        System.out.println(x + " = " + y);
     }
}

//=> 出力結果
//=> 10 = 10
x = y = 10のように、変数代入は複数をつなげることができます。
このとき、x = 10が先に評価されそうですが、これはy = 10が先に評価され、その結果がxに代入されるのです。
これは、+が左側から評価されるのに対し、=が右側から評価される性質によるものです。
こういった評価の方向を心配しなくてはいけないケースは、特殊例ではありますが、こういったプログラミングの特性を頭に入れておくことは基礎力アップに有効です。

知らなくてもコードは書けるが知っておくと尚良し

こういった「式」と「文」の違いや、評価における特性は、知らなくてもコードを書けます。
「何か違う」と感じたら、そのときに初めて調べるという流れでも良いですが、こういった基礎を知っておくだけで余計な手間を省き、効率的なコーディンができるようになります。
このような一見退屈なプログラミングの基礎もしっかり学び、土台がしっかりしたプログラミングを学んでいきましょう。