- ベストアンサー
for文の()内のメソッドは?
普通、String型の変数strの長さを知りたいと 思ったら str.length() で調べると思うのですが、 for 文中では、こういう風になりますよね‥‥ for (int i=0; str.length; i++) ただ、while文の()内では、ちゃんとlengthメソッドの 後に()を付けていたはず。 for文の場合の()は特殊なのかなと思うのですが、 これってどういう理屈なのでしょうか? # ;(セミコロン)がどうも怪しい感じなのですが。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、 >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変数の定義をもう一度確認してみてください。
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
>「.length」はJavaの文法用語でいう何にあたるのでしょうか もしかして JavaScript? であれば、プロパティ(Property)です。 参考URLには、Netscape のリファレンスの該当ページを示しておきます。
お礼
回答、ありがとうございます。 >もしかして JavaScript? >であれば、プロパティ(Property)です。 いえ、JavaScriptではなく、Javaです。 でもなるほど、JavaScriptではプロパティですか。 なにかヒントを掴めそうな気もするので、 この機会にJavaScriptも勉強してみます(^^)
お礼
回答、ありがとうございます。 ご指摘のとおり、strはString[]型(配列型)でした。 なるほど、配列の要素数はカッコなしの.lengthで得るのですね。 ただ、.length()はメソッドだということは分かるのですが、「.length」はJavaの文法用語でいう何にあたるのでしょうか。インスタンスフィールドでしょうか?(つまり配列型の変数が生成される時に、lengthフィールドに要素数が格納されているということなのでしょうか) APIリファレンスでArray型を調べたのですが、それらしきフィールドは見あたらないようでした‥‥。