初心者のJavaプログラミング

プログラミングガチ初心者がIT業界を目指して頑張ります。

【第8回】初心者のJavaプログラミング【インスタンスメソッド】

f:id:fightingneetkun:20140722170608p:plain
こんにちは。今日はインスタンスメソッドについて学んだことです。

インスタンスメソッド

まずは定義から。
インスタンスメソッドとは、オブジェクトに結びつけられているもので、そのオブジェクトに作用する機能のことです。
ちなみに、静的メソッドとは、クラスに結びつけられているメソッドのことでしたね。

以前のオブジェクト指向の回でも書きましたが、オブジェクト指向にはクラスとオブジェクトという重要な概念があるんでしたね。
そのクラス(つまり設計書)に結びついているのが静的メソッド、そのクラスから生成されたオブジェクト(つまり設計書を元に作られた実体)に結びついているのがインスタンスメソッドということになります。

静的メソッドの呼び出し方は

クラス名.静的メソッド名(引数);

という形でしたね。

それに対してインスタンスメソッドの呼び出しは

オブジェクト名.インスタンスメソッド名(引数);

という形になります。

実際に見てもらった方が分かりやすいと思うので、例です。

class Sample {
  public static void main( String args[] ) {
    // Stringクラスの変数を宣言、初期化
    String str = "Hellow, World";
    // int型の変数iに、文字列の長さを代入
    int i = str.length();
    // 表示
    System.out.println(i);
  }
}

str.length()というのが上に書いたインスタンスメソッドの呼び出しです。
strというStringクラスのオブジェクトに対しての機能なので、インスタンスメソッドのlength()を使います。
メソッドの数は山ほどあります。このlength()は引数で与えられたString型のオブジェクトの文字列数をint型で返します。だからint型のiを用意したんです。
メソッドの戻り値や引数、静的メソッドだったか、インスタンスメソッドだったかはリファレンスに書いてあります。ちなみにstaticと書いてあるものは静的メソッドのことです。

まあ、ちょっとびっくりしたんですが、Stringはクラスで文字列はオブジェクトなんですね。普通の変数だと思ってました。オブジェクトだから参照型なのかなと思ったのですが、Stringは特殊で参照型ではないらしいです。普通のint,floatのような基本データ型の振る舞いをするそうです。

String str;
System.out.println(str);

とやっても、ハッシュ値?が出てこなくて、コンパイルエラーが出てきたので、やはり基本データ型のように宣言した段階でメモリが確保されると思われます。
これは結果からの推測なのであたっているかは分かりませんw

とまあこんな感じですね。
明日はnew演算子について詳しくやるみたいです。

オブジェクトは参照型ということが理解できるようになると、結構楽しくなってくると思います。参照がオブジェクトの中に入っているとか書いてありますが、オブジェクトの番地を指すポインタが入っていると考えると分かりやすいのではないでしょうか。


今日はこれくらいで。

おわり