重複の可能性:
配列はJavaでどのように実装されていますか?
java.lang.Array クラスがないのはなぜですか? Java 配列がオブジェクトの場合、オブジェクトを拡張するべきではありませんか?
私は最近、Java 配列について考えていましたが、正確には何なのか疑問に思っていました。
それらはオブジェクトですか?
- それらに対して toString() を呼び出すことができます(
メモリアドレスのみを提供しますが) - 次の行がコンパイルされます
Object a = new int[5]
。
しかし、それらは本当にオブジェクトなのでしょうか?
- 新しい配列を作成するに
new int[5]
は...これは、私が今まで見たコンストラクターのようではありません。new Array<Integer>(5)
またはそのようなものだと思うでしょう - Java API を調べると、
array
クラスが見つかりません...見つかりますArray
が、これは実際には配列ではありません
そして、反復可能なプロパティはどうなっていますか
- for each ループ
iterator
で配列を調べることはできますが、見つけることができる配列のメソッドはありません
配列は、Java 言語に直接組み込まれた特別な例外にすぎないと思います。ただし、これはまた疑問を投げかけます:なぜ配列は特別な扱いを受けるのでしょうか? (配列 API がないのはなぜですか? 異なるタイプのコンストラクターがあるのはなぜですか?)
配列の本質に関する説明をいただければ幸いです。
PS私はJavaで数年の経験があるので、配列の使用方法とその機能を知っています。配列がどのように正確に実装されているのか、そしてその理由を尋ねているだけです。