😎

Java Silver 勉強③演算子と制御構造・配列の操作

2025/03/05に公開

【出題項目の例】

  • Javaの基本データ型と文字列の操作
  • 演算子と制御構造
  • ⭐️配列の操作
  • クラスの宣言とインスタンスの使用
  • メソッドの作成と使用
  • カプセル化の適用
  • 継承による実装の再利用
  • インタフェースによる抽象化
  • 例外処理
  • モジュール・システム

演算子と制御構造

1. 演算子 (Operators)

Javaにはさまざまな演算子があります。以下に代表的なものを紹介します。

(1) 算術演算子

  • + : 加算
  • - : 減算
  • * : 乗算
  • / : 除算
  • % : 剰余(余り)

例:

int a = 10, b = 3;
System.out.println(a + b);  // 13
System.out.println(a - b);  // 7
System.out.println(a * b);  // 30
System.out.println(a / b);  // 3
System.out.println(a % b);  // 1

(2) 比較演算子

  • == : 等しい
  • != : 等しくない
  • > : より大きい
  • < : より小さい
  • >= : 以上
  • <= : 以下

例:

int a = 5, b = 10;
System.out.println(a == b);  // false
System.out.println(a != b);  // true
System.out.println(a > b);   // false
System.out.println(a < b);   // true

(3) 論理演算子

  • && : 論理積(AND)
  • || : 論理和(OR)
  • ! : 否定(NOT)

例:

boolean x = true, y = false;
System.out.println(x && y);  // false
System.out.println(x || y);  // true
System.out.println(!x);      // false

(4) 代入演算子

  • = : 代入
  • += : 加算代入
  • -= : 減算代入
  • *= : 乗算代入
  • /= : 除算代入
  • %= : 剰余代入

例:

int a = 5;
a += 3;  // a = a + 3; -> a = 8
a *= 2;  // a = a * 2; -> a = 16

(5) インクリメント・デクリメント演算子

  • ++ : 変数を1増加
  • -- : 変数を1減少

例:

int a = 5;
System.out.println(a++);  // 5 (後置インクリメント)
System.out.println(++a);  // 7 (前置インクリメント)

2. 制御構造 (Control Structures)

制御構造はプログラムの流れを制御するために使用します。

(1) 条件分岐 (if, else if, else)

  • if : 条件が真の場合に実行
  • else if : 追加の条件判定
  • else : それ以外の場合に実行

例:

int a = 10;
if (a > 0) {
    System.out.println("a is positive");
} else if (a < 0) {
    System.out.println("a is negative");
} else {
    System.out.println("a is zero");
}

(2) switch文

  • 値に基づいて異なるケースを選択して実行

例:

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    default:
        System.out.println("Invalid day");
        break;
}

(3) 繰り返し構造 (for, while, do-while)

  • for : 指定回数だけ繰り返す
  • while : 条件が真の間繰り返す
  • do-while : 条件が後から評価される、最低1回は実行

例 (for):

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

例 (while):

int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}

例 (do-while):

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 5);

(4) break と continue

  • break : ループを抜ける
  • continue : 現在の繰り返しをスキップして次の繰り返しに進む

例:

for (int i = 0; i < 5; i++) {
    if (i == 2) {
        break;  // iが2のときループ終了
    }
    System.out.println(i);
}

for (int i = 0; i < 5; i++) {
    if (i == 2) {
        continue;  // iが2のときスキップして次の繰り返し
    }
    System.out.println(i);
}

配列の操作

Javaにおける配列の操作について、試験対策として以下の内容をまとめます。配列はデータの集合を扱うための重要な構造であり、基本的な操作を理解しておくことが重要です。

1. 配列の宣言と初期化

配列は、同じ型のデータを複数格納できる変数です。

(1) 配列の宣言

配列の型を指定して、配列を宣言します。

int[] arr;  // 整数型の配列を宣言
String[] names;  // 文字列型の配列を宣言

(2) 配列の初期化

配列を宣言した後、newキーワードを使ってサイズを指定して初期化します。

arr = new int[5];  // 5つの要素を持つ整数型の配列を作成

配列は同時に初期化することもできます。

int[] arr = {1, 2, 3, 4, 5};  // 5つの整数を持つ配列を初期化
String[] names = {"Alice", "Bob", "Charlie"};  // 文字列配列を初期化

2. 配列の要素へのアクセス

配列の要素にアクセスするには、インデックスを使います。インデックスは0から始まります。

int[] arr = {10, 20, 30, 40, 50};
System.out.println(arr[0]);  // 10
System.out.println(arr[3]);  // 40

3. 配列の長さ

配列の長さは、lengthプロパティで取得できます。lengthは配列の要素数を返します。

int[] arr = {10, 20, 30, 40, 50};
System.out.println(arr.length);  // 5

4. 配列のコピー

配列をコピーする方法は主に2つあります。

(1) System.arraycopy()を使ったコピー

指定した範囲を新しい配列にコピーするメソッドです。

int[] arr1 = {1, 2, 3};
int[] arr2 = new int[3];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);  // arr1の全要素をarr2にコピー

(2) Arrays.copyOf()を使ったコピー

ArraysクラスのcopyOf()メソッドを使う方法です。新しい配列に拡張してコピーもできます。

int[] arr1 = {1, 2, 3};
int[] arr2 = Arrays.copyOf(arr1, arr1.length);  // arr1の全要素をarr2にコピー

5. 配列の要素の変更

配列の要素はインデックスを指定して変更することができます。

int[] arr = {1, 2, 3, 4, 5};
arr[2] = 10;  // 3番目の要素を10に変更
System.out.println(arr[2]);  // 10

6. 配列のループ操作

配列の要素を一括で処理するためには、ループを使います。

(1) for文を使ったループ

int[] arr = {10, 20, 30, 40, 50};
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

(2) 拡張for文 (foreach)

Javaの拡張for文(foreach)を使うと、配列の全要素を簡単に処理できます。

int[] arr = {10, 20, 30, 40, 50};
for (int value : arr) {
    System.out.println(value);
}

7. 配列の並び替え(ソート)

Javaでは、Arrays.sort()メソッドを使って配列をソートすることができます。

int[] arr = {5, 3, 8, 1, 2};
Arrays.sort(arr);  // 配列を昇順にソート
System.out.println(Arrays.toString(arr));  // [1, 2, 3, 5, 8]

8. 配列の検索

配列内で特定の要素を検索するには、Arrays.binarySearch()メソッドを使うことができます。ただし、これはソートされた配列に対してのみ使用できます。

int[] arr = {1, 2, 3, 5, 8};
int index = Arrays.binarySearch(arr, 5);  // 5が配列のどこにあるかを検索
System.out.println(index);  // 3

9. 多次元配列

Javaでは多次元配列(例えば2次元配列)を扱うこともできます。

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 要素にアクセス
System.out.println(matrix[1][2]);  // 6

⭐️10. 配列のコピーと参照

配列は参照型であるため、コピーした場合に新しい配列が作られるわけではなく、参照がコピーされる点に注意が必要です。

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;  // arr2はarr1と同じ配列を参照
arr2[0] = 10;  // arr2を変更するとarr1も影響を受ける
System.out.println(arr1[0]);  // 10

Discussion