5

重複の可能性:
配列は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で数年の経験があるので、配列の使用方法とその機能を知っています。配列がどのように正確に実装されているのか、そしてその理由を尋ねているだけです。

4

0 に答える 0