• 締切済み

配列変数のlengthプロパティは、どうしてそのまま参照できるのですか?

bnosuke-xの回答

  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.3

配列はちょっと特殊ですが、オブジェクトです。 親クラスはObjectなので、そちらのメソッドも使えます。 文法的に特殊な点もありますが、それはStringクラスも同様ですよね。 さて、配列のサイズ取得が .length への直接アクセスなのは、メソッド呼び出しのオーバーヘッドを回避するためです。 一度作った配列のサイズは変わらないため、length は変更不要です。 length は final 宣言されて変更不可になったメンバ変数と考えてください。このように変更不可にしてあれば直接アクセスしても問題はないです。 完全なカプセル化ではないかも知れませんが、パフォーマンスを取ったということです。 クラス Array は配列を操作するためのメソッドを集めたクラスで、配列そのものではありませんよね? Array.getLength メソッドは、渡された配列の長さを返すメソッドであり、array.length がある以上はあまり必要ないものと思えます。 このメソッドの中身は例外処理を除けば int getLength( Object array ) {   return array.length; } となります。

関連するQ&A

  • APIリファレンスはどこにありますか

    初歩的な質問で申し訳ないのですがjavascriptで提供されている すべてのメソッドの説明がかかれたリファレンスのようなもの(言語仕様書?) はどこからダウンロードすればいいのでしょうか。 javaでいうと下記サイトのようなものはないのでしょうか。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

  • Javaで配列の長さを知るメソッド

    Javaの配列の長さを知るメソッドを調べています。 例えば String sTest[][] = new String[2][2]; sTest[0][0] = "something"; だとして、sTest[0][0]の長さ(文字数)の9を出力したいのですが、どのようにすればいいのでしょうか。 APIを調べて、クラスArrayのgetlengthを使って System.out.println(getlength(sTest[0][0])); としてみたら駄目でした。 また、Stringクラスのlengthを使って System.out.println(length(sTest[0][0])); としても駄目でした。 まだAPIにあまりなれていないのですが、書き方が間違っているのでしょうか?

    • ベストアンサー
    • Java
  • Visual C#でのメソッド

    Visual C# でプログラミングしようと思ったのですが、メソッドの一覧などはどこでわかるのでしょうか? たとえば、javaでならhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html このようなページを見てやってたのですが、 C#ではこういった情報の入手方法がわからず困っています。 わかるかたがいたら教えてください。

  • String(byte[] bytes, int offset, int length)の文字コードは?

    String(byte[] bytes, int offset, int length)は、バイト配列(8bitずつのまとまり)を、文字列型に直す、というものだと思うのですが文字コードは何にしたがって直すのでしょうか? http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html

    • ベストアンサー
    • Java
  • 今、SunのサイトのjavaAPIリファレンス見られますか?

    たとえば http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html とか、 http://java.sun.com/j2se/1.4/ja/docs/ja/api なんですが・・・。

    • ベストアンサー
    • Java
  • API 仕様のダウンロードできませんか?

    JavaTM Platform, Standard Edition, v 1.3 API 仕様 (http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html) の一式をダウンロードできるサイトをご存知ありませんか? 圧縮ファイルで22MBぐらいのものらしいのですが・・・

    • ベストアンサー
    • Java
  • APIドキュメントのダウンロードの仕方について

    現在JAVAのSDK1.4.1を入手してForteを使って勉強しているのですがAPI仕様の日本語版がほしくてサイトを調べていたら下記のサイトに日本語版がありました。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html ここのAPIドキュメントを私のPCへダウンロードしたいのですがどのようにしたらよいのでしょうか?

    • ベストアンサー
    • Java
  • APIのページ

    お世話になります。 Javaには「Java 2 Platform Standard Edition 5.0 API 仕様(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html)」 PHPには「PHPマニュアル(http://jp.php.net/manual/ja/index.php)」というように、公式(?)のようなAPIのページがありますが、 perlにはそのようなオンラインで参照できるページはないのでしょうか。 関数を探す際等に利用できるページを探しているのですが、見つかりません。 ご存知の方がいらっしゃったらどうかお教えいただけないでしょうか。

    • ベストアンサー
    • Perl
  • バウンドプロパティとは?

    お世話になります。 java.beans.PropertyChangeEventのAPIを見ると、 PropertyChange イベントは、Bean が「バウンド」プロパティーまたは「制約」プロパティーを変更するたびに送信されます。 というような記述があるのですが、この「「バウンド」プロパティー」とは何のことを指しているのでしょうか? Javaでプロパティといえば、クラスの中に定義される、アクセサメソッド(ゲッター・セッター)を使ってのみアクセスできるprivateな変数メンバのことだと思うのですが、「バウンド」プロパティとはそれのことですか?それとは別の何かですか? よろしくご教授ください。

    • ベストアンサー
    • Java
  • APIリファレンス

    こんにちは。java初心者のokwebsamaです。 今回ここで質問というか相談というか・・・・ javaのAPIリファレンスのサイト↓ http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html よりわかりやすくクラスを説明してあるサイトどなたか知りませんか? 内容が難しくて書いてある意味がよくわかりません! 書籍などでもあったら教えて下さいm(--)m

    • ベストアンサー
    • Java