- ベストアンサー
配列の最大要素数
はじめまして。 早速ですがjavaの配列のことなんですが 最大要素数が255に設定されているのですが これは何故か理由を知っている方がいたら教えてください javaにはあまり関係ないことなのかもしれませんが・・・
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です。 http://d.hatena.ne.jp/muimy/20070330/1175221299 こんな日記検索できました。 そしたら、コメントに投稿している人が 私の示したURLとは別にJVMバイトコード表の方も参照されてました。 http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc9.html なるほど。 多次元配列は、バイトコードに展開された時に、次元数が1バイトで表記されているから255までしか無理ってことですね。
その他の回答 (3)
- i2719
- ベストアンサー率35% (11/31)
型宣言しただけでもエラーになるのだから、以下のような仕様のためでしょう。 配列型のディスクリプタは、その次元255以下の場合にのみ有効となる。 An array type descriptor is valid only if it represents 255 or fewer dimensions.
お礼
遅くなって申し訳ありません(汗 やっぱり仕様ですか JVMの仕様ってことはコンパイラが違ったらエラーが出なくなる かもしれない可能性もあるかもしれないのでしょうか? って意味のない過程ですよね… こんな質問に答えていただいてありがとうございます
- PED02744
- ベストアンサー率40% (157/390)
JVMの制約として、Sunマイクロが定義しているから ・・・っていうのは、 望まれている回答ではないのですよね?(^-^; http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html の 4.8 Constraints on Java Virtual Machine Code に No anewarray instruction may be used to create an array of more than 255 dimensions. とかかれているのですが。 「may be」なので、もっと大きくても問題ない実装のJVMもあるかもしれませんが。
>最大要素数が255に設定されているのですが scene = new String[1000]; とか、要素数が1000個でも作れますが・・・
補足
間違えました・・ 要素数ではなく配列の次元でした・・・
お礼
遅くなって申し訳ありません(汗 No.2の回答の方も兼ねてこちらにお礼を… 色々と調べていただいてありがとうございます 添え字+次元数で256になるから255までってことでしょうか でも何となくJVMでの仕様って納得してしまいました(;´∀`) ありがとうございました