追記:2020/3/4 参考書籍を追記
はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。
環境
言語:Java11、JDK13.0.2
動作環境:Windows10
式とは
小さいころから四則演算を行い、式を読むことには慣れていると思うが、同じ電子演算機である電卓とプログラムとでは違う部分もあるので、注意が必要。
Javaにおいて「式」は以下の二つで構成される。
1、演算の仕方【演算子】(Operator)
ex) +(足す)、-(引く)、*(掛ける)、/(割る) etc...
2、演算の対象【オペランド】(Operand)
ex) 1 + 2 における1と2
式の実践
プログラムでは同じ+を、「文字列の連結」と「演算」の両方に使うことができる。文字列は""で囲われた中身。実際に表示する際の手順は割愛。
//5番のくじを持っているとき"僕のくじ番号は"+2+3+"だ。"//間違い。この結果は"僕のくじ番号は13だ。"となってしまう。
この間違いは、+で文字列として連結する前に、優先して数字を計算されるようにするべきだった。1と3がオペランドと認識されてしまい、そのまま順番に文字として表示されている。
正解:"僕のくじ番号は" + (2 + 3) + "だ。"
演算子には優先順位があり、数学でも「乗算除算が優先」、「カッコの中身が優先」という話は聞いたことがあるだろう。
正しい例
ex) (1 + 2)
結果:3
ex) "Java" + "Script"
結果:JavaScript
数字の代わりに変数をオペランドとして使うことで、計算結果がそのまま現れたように表現でき、自分の好きな文章を作ることができる。{}で囲った中が演算の手順。
ex)
{
int mathExam = 60;
int englishExam = 90;
int worldHistoryExam = 65;
int myTotalScore = mathexam + englishExam + worldHistoryExam;
"僕の合計点数は、" + myTotalScore + "だった。";
}
結果:僕の合計点数は、215だった。
それぞれをオペランドのブロックのように見れば、実際の数値がどうなっているか分かるだろう。
なお読点、句読点はあらかじめ文字列の中に入れておく必要がある。
代入
上の例で言えば、myTotalScore変数に対して、右辺にある三教科得点の合計が代入されたことになる。=の演算子が「右辺と左辺が等しくなることを示す」、と考えるとこの式は分かりにくい。
プログラムにおいて = 演算子は、「左辺の変数に、右辺の演算結果(評価)を代入する」と考えた方がいい。
ループカウンタ(現在の周回が何回目か数えておく変数、よく使われる)の式を挙げて説明する。
ex)
int loopCounter = 0;{
...
loopCouter = loopCounter + 1;
}
右辺と左辺が合わないが、プログラム的には正しい。まず右辺を評価して、1週目の時には初期値の0に1を加えた値がloopCounterに入っている。
この仕組みをループが周回する度に起きるようにすると、loopCounter変数の値が1ずつ増えていく。
終わりに
式と代入を考えるだけで精いっぱいになってしまったので、「演算子の種類」や「代入演算子」「演算の優先順位」などは明日投稿する。
参考
今まで書いていなかったので、僕の参考書を挙げる。
出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。
やさしいJava 第7版
注意:amazonのページにつながっている