プログラムの読み方

Javaのみに関わらずプログラム全般の読み方のとても重要な点について説明します。
義務教育で数学を得意とした方が最初に陥りやすい等号式の解釈の違いです。

数学の場合

xとyの値を求めよ

x+2y = 3

2x+5y = 5

数学では、等号式をの数式との数式は等しいと解釈します。
数学では、数式を上から下に読み、右から左へ読みます。
数学では、数式の展開(上下の入れ替え、左右の入れ替え、演算による方程式の変更)ができます。
プログラムの場合

最後に実行されるyの値を求めよ

int x = 1; ・・・・・(1

int y = 2; ・・・・・(2

x = x + y + 1; ・・・(3

y = x + 1; ・・・・・(4

プログラムでは、等号式をの処理内容「値」を格納すると解釈します。
プログラムでは、ソースを上から下に読み(実行され)、右から左に格納すると読みます。
プログラムでは、上から下、右から左に実行されるので順序を変える事は処理内容を変える事を意味します。

上記「(4」のyの値答えはもうお分かりだと思いますが、値が「5」になります。

プログラムで重要な「等号(=)」は、値が等しいと解釈するのではなく、右から左に格納すると解釈します。

オブジェクト指向言語Javaの考え方も一緒です。

オブジェクトの場合

Integer x = new Integer(1);

Integer y = new Integer(2);

x = new Integer(x.intValue() + y.intValue() + 1);

y = new Integer(x.intValue() + 1);

オブジェクト型であるプリミティブ型のラッパークラスで表現するとこんな感じでしょう。
x と yのオブジェクトは、前図色の違いのように new クラスの代入によって違う入れ物になっているのです。
インスタンス.メソッド(値)の場合には、左(インスタンス)から右(メソッド)に読みます。

coffee break

このプログラムの原理原則の読み方を一部ですがずっと訴えかけていた芸能人がいました。

YouTubeよりムーディー勝山の右から来たものを左へ受け流すの歌です。
この曲に「上から下へ読み流す」と「受け流す」を「格納する」とすれば完全にプログラムの原理原則の曲ですね。