Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの配列はプリミティブ型?それともオブジェクト?その理由を解説

Javaにおいて、配列は「オブジェクト」として扱われます。その理由は、配列が「new」キーワードを使って生成できる点にあります。「new」演算子は常にオブジェクトを生成するために使用されるため、配列もオブジェクトとして認識されるのです。

すべての配列の直接的な親クラス(スーパークラス)は「Object」クラスです。つまり、Javaのあらゆる配列型は何らかのクラスに属しており、int型の配列、float型の配列、double型の配列など、それぞれに対応するクラスが存在することになります。

さらに、配列は動的に生成できるだけでなく、変数に代入することも可能です。

配列がオブジェクトであることを裏付ける特徴

  • 「new」キーワードによってヒープ領域上に生成される
  • すべての配列は「Object」クラスのメソッド(toString()やequals()など)を継承している
  • 長さにアクセスするための「length」フィールドを持っている
  • instanceof演算子でObject型との互換性をチェックできる

サンプルコード

public class Demo{
    public static void main(String[] args){
        System.out.println("引数はObjectクラスのインスタンスか? ");
        System.out.println(args instanceof Object);
        int[] my_arr = new int[4];
        System.out.println("配列my_arrはObjectクラスのインスタンスか? ");
        System.out.println(my_arr instanceof Object);
    }
}

実行結果

引数はObjectクラスのインスタンスか?
true
配列my_arrはObjectクラスのインスタンスか?
true

このコードでは、「Demo」というクラスのmainメソッド内で、「instanceof」演算子を使用し、引数「args」がObjectクラスのインスタンスであるか、また新しく生成した配列「my_arr」がObjectクラスのインスタンスであるかを判定しています。

実行結果を見ると、どちらの判定も「true」と出力されています。これにより、mainメソッドの引数として渡される文字列配列だけでなく、プログラム中で新たに作成した配列もObjectクラスのインスタンスであること、すなわち配列がオブジェクトであることが実際に確認できます。

  1. JavaのArrayIndexOutOfBoundsExceptionとは?発生原因と対処法を解説

    配列とインデックスの基本 配列(Array)とは、同じ型の要素を固定サイズで順番に格納するためのデータ構造(コンテナ/オブジェクト)です。配列のサイズ(長さ)は生成時に決定され、後から変更することはできません。 配列内の各要素の位置は「インデックス(添字)」と呼ばれます。Javaの配列は0始まりのため、最初の要素はインデックス0、2番目の要素はインデックス1、というように順に番号が割り当てられます。 配列の各要素へは、「配列名[インデックス]」という形式の式を使ってアクセスします。 System.out.println(myArray[3]); // 1457 が出力される たとえばサイズ7

  2. Javaの配列におけるデフォルト値とは?各データ型の初期値をサンプルコード付きで解説

    Javaには、同じ型の要素を固定サイズで連続的に格納できるデータ構造「配列(array)」が用意されています。配列は複数のデータをまとめて管理するために使われますが、実質的には「同じ型の変数を集めたもの」と考えると理解しやすくなります。 ここで重要なのが、配列を生成した際に要素を明示的に初期化しなくても、JVMが自動的にデフォルト値を割り当ててくれるという仕様です。そのため、newで配列を作成した直後でも、未初期化の状態のまま安全に各要素へアクセスできます。 データ型ごとのデフォルト値一覧 主なデータ型のデフォルト値は以下の通りです。 boolean … false byte / shor