• ベストアンサー

配列の最大要素数

はじめまして。 早速ですがjavaの配列のことなんですが 最大要素数が255に設定されているのですが これは何故か理由を知っている方がいたら教えてください javaにはあまり関係ないことなのかもしれませんが・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

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までしか無理ってことですね。

hal222002
質問者

お礼

遅くなって申し訳ありません(汗 No.2の回答の方も兼ねてこちらにお礼を… 色々と調べていただいてありがとうございます 添え字+次元数で256になるから255までってことでしょうか でも何となくJVMでの仕様って納得してしまいました(;´∀`) ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • i2719
  • ベストアンサー率35% (11/31)
回答No.4

型宣言しただけでもエラーになるのだから、以下のような仕様のためでしょう。 配列型のディスクリプタは、その次元255以下の場合にのみ有効となる。 An array type descriptor is valid only if it represents 255 or fewer dimensions.

参考URL:
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#1221
hal222002
質問者

お礼

遅くなって申し訳ありません(汗 やっぱり仕様ですか JVMの仕様ってことはコンパイラが違ったらエラーが出なくなる かもしれない可能性もあるかもしれないのでしょうか? って意味のない過程ですよね… こんな質問に答えていただいてありがとうございます

全文を見る
すると、全ての回答が全文表示されます。
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

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もあるかもしれませんが。

全文を見る
すると、全ての回答が全文表示されます。
noname#246547
noname#246547
回答No.1

>最大要素数が255に設定されているのですが scene = new String[1000]; とか、要素数が1000個でも作れますが・・・

hal222002
質問者

補足

間違えました・・ 要素数ではなく配列の次元でした・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • perl 配列の要素数について

    配列の要素数について質問させていただきます。 プログラムの中で、以下のようにファイルの内容を1行ずつ読み込み、配列に入れています。  open (IN, "ファイル名");  @data = <IN>;  close (IN); こういった形で配列に入れていった場合、入れられる最大行数(=最大要素数)はどれくらいになるのでしょうか。 現在100万行のテキストファイルは、問題なく読み込めているようでした。 ご存知の方がおられましたら、ご回答いただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 配列の要素数

    配列の要素数を求めるプログラムを作りたいのですが

  • char型配列の最大要素数

    他の回答でchar型の最大要素数が257となっているのがあったのですが、これはいいのでしょうか?

  • 配列の要素数について

    下記の記述の場合、配列の要素数っていくつになりますか? Dim strArray() As String ReDim strArray(0) また下記のように、配列の要素数を具体的に書かずに使った場合不具合はでますか? Dim strArray() As String strArray(0) = "aa" strArray(1) = "bb"

  • 配列の要素数を調べる方法

    配列の中にいくつ要素があるか後から調べる方法はあるでしょうか? int test[4][3] = {   {0,1,2},   {0,1,2},   {0,1,2},   {0,1,2}, } ; 上のケースだと、X方向に3、Y方向に4つの 要素があります。しかし、これだとあらかじめいくつ要素があるかを決めて 置かないといけません。 例えば、 int test[] = {0,1,2,3....} みたいに宣言された場合や、 char *test[] = {   "ああああああ",   "いいいいいい",   "うううううう",      ・      ・ //(これは文字列の数を要素数とします) } ; のように宣言された二次元配列などで、後から配列内にいくつ要素があるかを 調べることなどは可能でしょうか?

  • CUDAでの配列の最大値について

    質問です。 GPUを用いて配列の最大値を求める処理について 1,隣の要素と比較する。 2,スレッド数だけ離れた要素と比較する。 例えば,配列の要素数16、スレッド数8の場合 1,スレッド0は0番目と1番目の要素を比較 2,スレッド0は0番目と8番目の要素を比較 どちらが高速になると思われますか? 自分は、バンクコンフリクトが少ない2番の方が高速になると思います。 皆様の回答お待ちしております。

  • 配列の要素数に変数を入れたいときには

    よろしくお願いします。 配列の要素数には定数しか入れられないのですが,どうしても変数を入れたいときは,それを引数として関数を呼び出すしか方法はないでしょうか。 具体的には,scanfで手に入れたint型の変数を要素数とする配列を宣言したいのですが,どうすれば良いでしょうか。 ご教授ください。

  • 配列とその要素数をメンバにもつ構造体

    C言語では,配列を引数とするときに,合わせて要素数を渡さなければいけないといわれます. そこで,配列とその要素数をメンバにもつ構造体を定義して,これを要素数つき配列のように扱えば,引数として渡す場合には,この構造体を渡すだけでよいと思うのですが,このような用法は一般的に用いられているでしょうか. 単純なアイデアだと思うんですが,あまり紹介されているのを見たことがありません. もしあまり用られない用法であれば,その理由を教えてください. 現在,プログラムを書いているのですが,引数の多さに閉口しており,上の考えで,引数を減らしたいと考えています.  よろしくお願いいたします.

  • 二次元配列における要素数のはじき出し

    普通、配列の要素数を出すとき $num = @list; で良いですよね? ですが、二次元配列で、 $num = @list[1]; って形にするとエラーになります。 どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • 参照配列の要素数の求め方は?

    リファレンス配列の要素数は、$#では求められないのでしょうか? ------------------------------------- foreach $i(0 .. 3){ $hash->[$i] = $i * 100; } print "\%hashの要素数->$#hash\n"; $ref = \%hash; print "\%{$ref}の要素数->$#{$ref}\n"; -------------------------------------

    • ベストアンサー
    • Perl