• ベストアンサー

for文の()内のメソッドは?

普通、String型の変数strの長さを知りたいと 思ったら str.length() で調べると思うのですが、 for 文中では、こういう風になりますよね‥‥ for (int i=0; str.length; i++) ただ、while文の()内では、ちゃんとlengthメソッドの 後に()を付けていたはず。 for文の場合の()は特殊なのかなと思うのですが、 これってどういう理屈なのでしょうか? # ;(セミコロン)がどうも怪しい感じなのですが。

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

  • ベストアンサー
  • melonpan
  • ベストアンサー率27% (3/11)
回答No.1

まず、 >for文の場合の()は特殊なのかなと思うのですが、 for文内であろうと、String.length()の()がはずすことはできません。 どの本にfor (int i=0; str.length; i++) といった文がかかれていたのはわかりませんが、 考えられる原因として、以下の2点が挙げられます。 1.strが配列である。 配列の場合、配列の要素の数を調べるときには hogehoge.length というように、()はつけません。 先ほどのforループの中に str[i] といった記述があれば、strは配列です。 変数strの定義をもう一度確認してください。 2.記述ミス String型の変数strの文字列の長さを調べようとしているのに、 メソッドの括弧を付け忘れた可能性もあります。 いずれにせよ、str変数の定義をもう一度確認してみてください。

yuui
質問者

お礼

回答、ありがとうございます。 ご指摘のとおり、strはString[]型(配列型)でした。 なるほど、配列の要素数はカッコなしの.lengthで得るのですね。 ただ、.length()はメソッドだということは分かるのですが、「.length」はJavaの文法用語でいう何にあたるのでしょうか。インスタンスフィールドでしょうか?(つまり配列型の変数が生成される時に、lengthフィールドに要素数が格納されているということなのでしょうか) APIリファレンスでArray型を調べたのですが、それらしきフィールドは見あたらないようでした‥‥。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

>「.length」はJavaの文法用語でいう何にあたるのでしょうか もしかして JavaScript? であれば、プロパティ(Property)です。 参考URLには、Netscape のリファレンスの該当ページを示しておきます。

参考URL:
http://developer.netscape.com/docs/manuals/communicator/jsref/core1.htm#1080770
yuui
質問者

お礼

回答、ありがとうございます。 >もしかして JavaScript? >であれば、プロパティ(Property)です。 いえ、JavaScriptではなく、Javaです。 でもなるほど、JavaScriptではプロパティですか。 なにかヒントを掴めそうな気もするので、 この機会にJavaScriptも勉強してみます(^^)

関連するQ&A