Javaの基礎④

javaの基礎 サムネ画像

Javaの基礎の第四弾!
過去の投稿をみていない方は、ぜひそちらからご覧ください。

目次

javaで「 = 」を二個書くのはどんなとき?

Javaで「イコールを二個(==)」書く理由は、値の比較と代入の区別のためです。

=(イコール1個)

  • 代入を意味します。
  • 右側の値を左側の変数に「入れる」操作です。
int a = 5; // 5をaに代入

==(イコール2個)

  • 比較を意味します。
  • 左右の値が等しいかどうかを調べる演算子です。
  • 結果は true(等しい)か false(等しくない)になります。
int a = 5;
if (a == 5) {  // aの値が5かどうかを比較
  System.out.println("aは5です");
}

補足

文字列(String)を比較するときは == ではなく .equals() を使います。
例では直接文字列を比較していますが、変数に代入された文字列を比較するときにも使用できます。

String s = "hello";
if (s.equals("hello")) {
  System.out.println("文字列が一致");
}

変数や関数の有効範囲 「スコープ」

ローカルスコープ(Local Scope)

  • あるブロック(例えば関数や { } の中)でだけ有効。
  • ブロックの外では使えない。
void example() {
  int x = 10; // xはこの関数内だけ有効
  System.out.println(x);
}
System.out.println(x); // エラー!xはここでは見えない

ブロックスコープ

  • { } で囲まれた範囲で有効。
  • ローカル変数はブロックを出ると消える。
{
  int z = 30;
  System.out.println(z);   // 30
}
System.out.println(z);   // エラー!zはブロック外では無効
Ami

コンパイルエラーでよく見かける「シンボルが見つかりません」が出た時には、まずスコープを疑うのは非常に有効です!
下記のポイントを中心に見返してみてください。
 ・インポートやライブラリ参照の確認
 ・スコープを確認(その変数・メソッドは今アクセス可能か?)
 ・スペルを確認
 ・宣言の有無を確認
些細なことではありますが、エラーが起きた際に、書き方を間違えた!と焦っていろんなサイトを未漁るよりも先に、単純なスペルミスをしていないかチェックしてみてください!
何分か間違いが見つからずに困っていたけれど、「 ; 」を忘れていただけ、、なんてことは全然あり得ます笑

switchって便利!

if文を覚えると、実現できるプログラムが一気に増えて嬉しくなりますよね!
しかし、同じようなif文が何度も続いてしまう…そんなことはありませんか?
そんなときに役立つのが switch 文です。
if文だらけのソースコードが、どのように短くスッキリ書けるのか見てみましょう。

冗長な if-else の例

int month = 4;

if (month == 1) {
  System.out.println("January");
} else if (month == 2) {
  System.out.println("February");
} else if (month == 3) {
  System.out.println("March");
} else if (month == 4) {
  System.out.println("April");
} else if (month == 5) {
  System.out.println("May");
} else if (month == 6) {
  System.out.println("June");
} else if (month == 7) {
  System.out.println("July");
} else if (month == 8) {
  System.out.println("August");
} else if (month == 9) {
  System.out.println("September");
} else if (month == 10) {
  System.out.println("October");
} else if (month == 11) {
  System.out.println("November");
} else if (month == 12) {
  System.out.println("December");
} else {
  System.out.println("Invalid month");
}

何月なのかを出力したいソースコードというは分かりますが、、長くて見づらいですよね。

switch を使ったスッキリ版

比較対象が同じ変数の場合に switch は特に有効なので、if文が2,3個の時は、あまり効果を感じられないかもしれませんが、覚えていて損はありません!

int month = 4;

switch (month) {
    case 1:  System.out.println("January"); break;
    case 2:  System.out.println("February"); break;
    case 3:  System.out.println("March"); break;
    case 4:  System.out.println("April"); break;
    case 5:  System.out.println("May"); break;
    case 6:  System.out.println("June"); break;
    case 7:  System.out.println("July"); break;
    case 8:  System.out.println("August"); break;
    case 9:  System.out.println("September"); break;
    case 10: System.out.println("October"); break;
    case 11: System.out.println("November"); break;
    case 12: System.out.println("December"); break;
    default: System.out.println("Invalid month");
}

どの値に対しての処理なのかが一気にわかりやすくなりましたね!

if文がとても便利なので、意識しないとif文ばかりになってしまう…ということが最初よくありました。
何をしたいコードなのか?あとで追加したい時にやりやすくするには?可読性を上げるには?
様々なことを考えながら作るとより良いコードになっていきます。

まとめ

switch 文は、最初に対象となる変数や式を指定し、
case ラベルに対応する値を書き、それぞれの値に応じた処理を記述する構文です。
複数の値に該当しない場合は default で処理を指定できます。

for文を使った繰り返し処理

  • for 文は「初期化 → 条件チェック → 処理 → 更新」を繰り返す構造
  • 回数が決まっている繰り返し処理に適している
for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}
STEP
int i = 1

ループ用の変数 i を定義し、1からスタートする
この変数を使って何回ループの仕方や、処理対象の番号を管理する

STEP
i <= 5

ループの条件「i が 5 以下の間、処理を繰り返す」という意味

STEP
i++

ループが1回終わるたびに i を1増やす( i = i + 1 と同じ )

STEP
System.out.println(i);

ループ内で実行される処理
現在の i の値を出力する

break と continue

ループの処理を制御ですが、それぞれ役割が違います。

break

  • ループを完全に終了させる
  • その時点でループから抜け、ループの後の処理に進む
// i == 3 のときにループを抜けるので、3以降は出力されない
for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        break; // i が 3 になったらループ終了
    }
    System.out.println(i); // 2
}

continue

  • ループの次の回にスキップして進む
  • それ以降の処理はその回では実行されず、次の繰り返しへ
// i == 3 のときは出力をスキップするが、ループは続く
for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue; // iが 3 のときはスキップ
    }
    System.out.println(i); //2 4 5が改行しながら出力
}

まとめ

第一弾から4回に渡り、基礎をまとめてきました。
覚えておいた方がたくさんあって大変…と私も思っていましたが、暗記をするというよりは理解するということに重きを置いて、とにかくソースを見て、書いて、動かして、数をこなしていくことが1番の近道だと思います。

ルールを守れば正しく動いてくれるので、動かない時は、何かのルールを無視しているから。
本当に些細な間違いに気づくためにも、if文を書く時には、if () {}までは最初に書く。など自分の中で決めておくのもおすすめです。

シェアしてもらえると嬉しいです
  • URLをコピーしました!
目次