広告

手を動かして学ぶ Java入門 (文と式の違い)

環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の文と式の違いについて学びます。

10分くらいで、さくっと終わる記事をめざしています。


シリーズ一覧

続きは近日公開予定!

はじめに

この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/11/18 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)

実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。

詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。

文と式の違い

正直、「文」と「式」の細かい定義は難しいです。
なので、ここではおおざっぱに、次のことをなんとなく理解してもらえれば OK です。

  • 文 : 値を返さない
  • 式 : 値を返す

そして「文」は「式」で構成されます。

図1

具体的な例で見てみましょう。

int x = 2 + 3;
^^^^^^^^^^^^^^ <--- 文

これは「文」です。
この文を実行すると、変数 x2 + 3 の結果が代入されます。

この「文」自体は 値を返さない、というのはなんとなくイメージできますでしょうか?

ちなみに、2 + 3 は「式」です。

2 + 3
^^^^^ <--- 式

2 + 3 は、5 という 値を返す ので「式」というわけですね。

さて、Java の入門記事として、「文」と「式」を解説するかどうかは少し悩みました。
入門の内容としては少し難しいのではないかな、と…

ただ、今後の記事では、「文」と「式」という単語は明確に使い分けていきます。

例えば、まだ解説はしていませんが …

  • if
  • for
  • switch

などがあります。

「文」と「式」の違いがわかっていれば、今後の解説がより理解しやすくなる … と思います。

プログラムにおける文(ぶん、statement)とは、コンピュータプログラミング言語によるプログラムを構成するもののひとつで、一般に手続きを表すものである。

Java における「文」とは、ひとまとめにされた処理 (手続き) のことです。
英語では Statement といいます。

文の特徴としては、文を実行しても 結果 は返しません。
「値を持たない」ともいいます。

今まで、特に説明もなく文末にはセミコロン (;) をつけていました。
これは「文」が終わりますよ、というマークです。

int x = 123;
           ^ <--- この部分!

もちろん、セミコロンがないとコンパイルエラーとなります。

実際に、エラーとなる例を見てみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

エラーとして、

Main.java:3: error: ';' expected
        int x = 2 + 3
                     ^
1 error

が表示されたら成功です。

expected は「期待される」という意味ですね。
Java としては ; を期待しているけど、それがないよ、というエラーです。

つまり「式」だけではプログラムは実行できない、というわけですね。

ちなみに、セミコロン (;) が必要ない「文」もあります。
(if文やfor文など)

式(しき、expression)とは、プログラミングにおいて、言語によって定められた優先順位や結びつきの規定に則って評価される値、変数、演算子、関数などの組み合わせである。

Java における「式」とは、結果を返す処理のことです。
英語では Expression といいます。

式の特徴としては、式を処理(評価) すると 結果 を返します。
「値を持つ」ともいいます。

【例】

2 + 3
^^^^^ <--- 式

2 + 3 は、5 という 値を返す ので「式」になります。

ちなみに、細かいですが 23 それ自体も「式」の1つです。
2 は 2 を返しますし、3 は 3 を返す、というわけですね。

【備考】

実は値を返さない「式」もあります。

例えば、次のようなメソッドの呼び出しです。

System.out.println("Hello, world!")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- 式です。

println メソッドは、文字列を出力するだけで値は返しません。

さて、この「式」ですが、式だけではプログラムを実行できません。
そのため、この式にもセミコロン (;) をつけて「文」にする必要があります。

System.out.println("Hello, world!");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- 文です。

もちろん、セミコロンがないとコンパイルエラーとなります。

応用問題

まずは、下記のプログラムをそのまま「実行(Ctrl-Enter)」してみましょう。
結果はコンパイルエラーになったかと思います。

【問題】

そこで、このコードにセミコロン (;) だけを書き加えてエラーを解消してください。
また、「出力」は 6 となるようにしてください。

コードにセミコロン (;) を書き加えたら、もう一度「実行(Ctrl-Enter)」してみましょう。

ヒントとしては

  • セミコロン (;) を使えば、1行で2つの「文」を書くことができる。

です。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

無事に、「出力」が 6 となりましたでしょうか?
もし解けなかった場合は、下記の回答例をご参照ください。

回答例

【コード】

public class Main {
    public static void main(String[] args) {
        int n = 2; n = n * 3;
        System.out.println(n);
    }
}

【出力】

6

まとめ

今回は、次のことを学習しました。

  • 文 : 値を返さない
  • 式 : 値を返す

次回は「手を動かして学ぶ Java入門 (if文)」になります。


関連記事

ページの先頭へ