Javaの配列代入で知っておくべき基本ルール|オブジェクト型とプリミティブ型の違いを解説
Javaにおける配列への値の代入には、いくつか知っておくと役立つ重要なルールがあります。本記事では、オブジェクト型配列とプリミティブ型配列それぞれの代入規則を、実際に動作するサンプルコードとともにわかりやすく解説します。
ポイント1:オブジェクト型配列には子クラスのインスタンスも代入できる
オブジェクト型の配列を作成する場合、配列の要素として格納できるのは、宣言した型そのもののオブジェクトだけではありません。その子クラス(サブクラス)のインスタンスも格納することができます。これはJavaのポリモーフィズム(多態性)によるもので、継承関係にあるオブジェクトであれば柔軟に扱えるという特徴があります。
サンプルコード
public class Demo{
public static void main(String[] args){
Number[] my_val = new Number[3];
my_val[0] = new Integer(91);
my_val[1] = new Double(65.963);
my_val[2] = new Double(45.7965);
System.out.println(my_val[0]);
System.out.println(my_val[1]);
System.out.println(my_val[2]);
}
}
実行結果
91 65.963 45.7965
この例では、Demoクラスのmainメソッド内でNumber型の配列を生成しています。NumberはIntegerやDoubleなどのスーパークラスにあたるため、異なる数値ラッパークラスのインスタンスを同じ配列に混在させて格納できます。格納された各要素は、順番にコンソールへ出力されます。
ポイント2:プリミティブ型配列では暗黙的な型変換(拡大変換)が行われる
プリミティブ型の配列に値を代入する場合、要素の型が配列の宣言型よりも表現範囲が狭い型であれば、自動的に拡大変換(widening conversion)されてから代入されます。たとえば、int型の配列にはchar型やbyte型の値も問題なく代入可能です。一方、拡大変換できない型を代入しようとすると、コンパイルエラーが発生します。
サンプルコード
public class Demo{
public static void main(String[] args){
int[] my_arr = new int[4];
my_arr[0] = 65;
my_arr[1] = 'S';
byte my_byte = 11;
my_arr[2] = my_byte;
my_arr[3] = 34;
System.out.println("The array contains :");
System.out.println(my_arr[0] + my_arr[1] + my_arr[2] + my_arr[3]);
}
}
実行結果
The array contains : 193
この例では、int型の配列に対してint、char、byteといった異なる型の値を代入しています。char型の'S'(Unicodeコードポイントで83)やbyte型の11は、いずれもint型へ暗黙的に変換されてから格納されます。最後に全要素を合計して出力しており、65 + 83 + 11 + 34 = 193 という計算結果が得られます。
まとめ
配列への代入では、オブジェクト型なら「宣言型またはそのサブクラスのインスタンス」、プリミティブ型なら「暗黙的な拡大変換が可能な型」というルールに従います。この仕組みを正しく理解しておくことで、型の不一致によるコンパイルエラーを未然に防ぎ、より安全で柔軟なJavaコードを書けるようになります。
-
知って驚く!バイオテクノロジーの興味深い事実21選
前回のバイオテクノロジーに関する記事では、バイオテクノロジーとは何か、そしてこれまでの歩みの中で達成されてきたマイルストーンについてご紹介しました。おさらいすると、バイオテクノロジーとは、生物学的な生命体を実用的・産業的に応用する技術を研究する分野です。この技術は主に農業、医療、非食料農業、環境分野で活用されています。 あらゆる技術には、それにまつわる驚きの事実が隠されています。バイオテクノロジーも例外ではありません。思わず目を見開いてしまうような事実の数々を、今回はご紹介します。 バイオテクノロジーの驚きの事実21選 1. バイオテクノロジーには4つの「色」がある 少し奇妙に聞こえるかもしれ
-
知られざるビットコインの驚きの事実9選|サトシ・ナカモトの謎からFBIの保有額まで
ネット上には、技術的な解説から面白い雑学まで、ビットコインに関する記事が数多く存在します。今回は、あまり知られていないビットコインの興味深い事実を9つ厳選してご紹介します。それでは早速、順番に見ていきましょう。 1. 本物のサトシ・ナカモトは誰なのか? 「サトシ・ナカモト」という名前には、今なお厚い秘密のベールがかけられています。このペンネームの裏にいる本当の人物が誰なのか、誰も確かなことを知りません。初期のホワイトペーパーが公開された時間帯、文章のスタイル、書かれたコードの特徴などを分析し、その出自の手がかりを探る調査が続けられてきました。ビットコイン、ひいてはそれを支えるブロックチェーン