0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【配列の作成と使用】

Last updated at Posted at 2024-06-02

はじめに

オラクル認定資格教科書 Javaプログラマ Silver SE8
第一章 Javaの基本 
第二章 Javaのデータ型の操作
第三章 演算子と判定構造の使用
第四章 配列の作成と使用← イマココ!!
第五章 ループ構造の使用
第六章 メソッドとカプセル化の操作
第七章 継承の操作
第八章 例外の処理
第九章 Java APIの主要なクラスの操作

配列の概要

配列は複数の値(要素と呼ぶ)を一つにまとめて扱うためのインスタンスである
以下の2つの特徴がある
・同じ型、もしくは互換性のある型の値しか扱えない
・扱える要素数はインスタンス生成時に決める

配列の生成

配列を使うには、newキーワードで配列のインスタンスを生成する必要がある

//配列インスタンスの生成、配列型変数への代入
int[] array = new int[3];

配列インスタンスの生成

//配列インスタンスの生成
new int[3];

配列インスタンスの生成時、必ず整数値で要素数を指定しなければならない
int[] array = new int[0]のように要素数0でも指定可能

配列型変数の宣言

//配列型変数の宣言
int[] array;

配列型変数の宣言で大括弧「[]」を使って配列型であることを示すが、
この大括弧は変数名の後ろにも記述できる→int array[];

配列要素の初期化

配列インスタンスを生成した直後、配列の要素には以下の値がデフォルトで入っている

デフォルト値
整数型 0
浮動小数点数型 0.0
真偽型 false
文字型 ¥u0000
オブジェクト型 null

インスタンスの生成と初期化を同時にする場合は初期化演算子「{}」を使用する

//newしなくてもインスタンスが生成される
int[] array = {10, 20, 30}
//new使ってもいいけれど、[]内に要素数を指定してはいけない
int[] array = new int[]{2, 4}

多次元配列

配列にほかの配列への参照を持っていることを「2次元配列」、「3次元配列」〜「多次元配列」という

int[][] arrayA = new int[3][3]

多次元配列インスタンスの生成

通常の配列同様、生成時に要素数を指定する必要がある
ただし、1次元目のみ必須であり、2次元以降は以下のように一次元の要素に代入する形で後から生成できる

int[][] array = new int[3][];//2次元配列
array[0] = new int[2]
array[1] = new int[3]
array[2] = new int[5]
//2次元目以降は要素数を揃える必要はない

多次元配列の宣言

int[][] arrayA;//2次元配列
int[][] arrayA[];//3次元配列_大カッコは型名と変数名双方の後ろに記載できる

初期化演算子を率いた配列の生成・宣言・初期化

int[][] array = {};
int[][] array = {{2, 3}, {4, 5}};
int[][] array = new int[][]{};
//2行に分ける場合
int[][] array;
array = new int[][]{};

※初期化演算子を使う場合、[]内で要素数を指定してはいけない

配列のコピー

cloneメソッド

cloneメソッドはコピー対象の配列と同じ値を持つインスタンスを新たに生成しており、厳密にはコピーではない
多次元配列の場合、一次元目は新インスタンスだが、2次元目以降はコピー元と同じ参照である

int arrayA = {1, 2, 3, 4};
int[] arrayB = arrayA.clone();
System.out.println(arrayA == array B);
//結果: false (arrayBに代入されているものはarrayAを複製した新インスタンスのため参照が異なる)
for (int i ; arrayB) {
  System.out.println(i);//結果: 1 2 3 4
}

arraycopyメソッド

cloneメソッドは配列の一部を切り出してのコピーができないが、arraycopeでは指定してコピーできる
System.arraycopy(コピー元配列, コピー開始位置(0から), コピー先配列, コピー先置き換え開始位置(0から), コピーしてくる要素の数)

int arrayA = {1, 2, 3, 4, 5};
int[] arrayB = new int[5];
System.arraycopy(arrayA, 1, arrayB, 0, 4);
for (int i ; arrayB) {
  System.out.println(i);//結果: 2 3 4 5
}

リンク集

【Javaの基本①】クラスの構造
【Javaの基本②】パッケージとインポート
【継承の操作②】インターフェース
【Javaのデータ型の操作①】プリミティブ型のデータ・参照型
【演算子と判定構造の使用①】論理演算子(&&、||)、同一性(==)、同値性(equals)
【演算子と判定構造の使用②】分岐処理(if、swich)
【配列の作成と使用】
【ループ構造の使用】while文、do-while文、for文、拡張for文
【メソッドとカプセル化の操作①】メソッドの概要
【メソッドとカプセル化の操作②】オーバーロード、コンストラクタ
【継承の操作①】クラスの継承
【例外の処理】
【Java APIの主要なクラスの操作】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?