Java | フラグ管理を使ったメニューのON/OFFを作るステップ実装

Java Java
スポンサーリンク

では ビット演算でフラグ管理をする実践例 を、ステップごとに初心者向けに作ってみましょう。
今回は「メニューの ON/OFF」を管理する例です。


1. 何を作るか

  • 3つの機能(メニュー)があります:
    1. 音楽
    2. 効果音
    3. 通知
  • 各メニューの ON/OFF 状態を 1つの整数(flags) で管理します。
  • ビット演算で「ON にする・OFF にする・状態を確認する」を行います。

2. フラグを定義する

final int MUSIC = 1 << 0; // 0001 → 音楽
final int SOUND = 1 << 1; // 0010 → 効果音
final int NOTIFY = 1 << 2; // 0100 → 通知
Java

ポイント:1 << n は「2^n」のビットを1にする操作です。

  • MUSIC = 1 = 0001
  • SOUND = 2 = 0010
  • NOTIFY = 4 = 0100

3. 初期状態(全部OFF)

int flags = 0; // 0000 → 全部OFF
Java

4. メニューをONにする

// 音楽と通知をONにする
flags |= MUSIC;   // 音楽ON
flags |= NOTIFY;  // 通知ON
System.out.println("状態: " + Integer.toBinaryString(flags)); // 0101
Java

flags |= MUSICflags = flags | MUSIC と同じ意味。
「既存の状態を壊さずに、このビットだけ1にする」操作です。


5. メニューをOFFにする

// 通知をOFFにする
flags &= ~NOTIFY; // NOTIFYビットを反転してAND
System.out.println("状態: " + Integer.toBinaryString(flags)); // 0001
Java

flags &= ~NOTIFY は「このビットだけ0にする」操作です。


6. メニューの状態を確認する

boolean musicOn = (flags & MUSIC) != 0;
boolean soundOn = (flags & SOUND) != 0;
boolean notifyOn = (flags & NOTIFY) != 0;

System.out.println("音楽: " + musicOn);   // true
System.out.println("効果音: " + soundOn); // false
System.out.println("通知: " + notifyOn);  // false
Java

ポイント:flags & MUSIC が0でなければONです。


7. メニューを切り替える(toggle)

// 音楽をON/OFF切り替え
flags ^= MUSIC;
System.out.println("音楽状態切り替え後: " + ((flags & MUSIC) != 0)); // false

^=(XOR)は「今の状態をひっくり返す」のに便利です。


8. 完全なサンプルコード

public class MenuFlags {
    public static void main(String[] args) {
        final int MUSIC = 1 << 0;   // 0001
        final int SOUND = 1 << 1;   // 0010
        final int NOTIFY = 1 << 2;  // 0100

        int flags = 0; // 全部OFF

        // ONにする
        flags |= MUSIC;
        flags |= NOTIFY;
        System.out.println("ON後: " + Integer.toBinaryString(flags));

        // OFFにする
        flags &= ~NOTIFY;
        System.out.println("OFF後: " + Integer.toBinaryString(flags));

        // 状態確認
        System.out.println("音楽: " + ((flags & MUSIC) != 0));
        System.out.println("効果音: " + ((flags & SOUND) != 0));
        System.out.println("通知: " + ((flags & NOTIFY) != 0));

        // 切り替え
        flags ^= MUSIC;
        System.out.println("音楽切り替え後: " + ((flags & MUSIC) != 0));
    }
}
Java

💡 初心者向けポイント

  1. 1つの整数で複数ON/OFFを管理できるので便利。
  2. |= でON、&= ~ でOFF、^= で切り替えが基本。
  3. 確認は (flags & FLAG) != 0 でOK。
  4. ビットの動きは二進数で考えると理解しやすい。
タイトルとURLをコピーしました