2011年7月24日日曜日

Javaの私的まとめ3

Javaのお勉強その3

  1. データ型

    基本データ型と、参照型の2種類がある。

    参照型はクラス、インタフェース、配列変数であり、それ以外(int型など)は基本データ型になる。

    String型(参照型)は特殊で、いったん生成すると、内部状態を変更することはできない。以下のようにしても、s2の値自体はabcのままである。

    String s1 = "abc";
    String s2 = s1;
    s1 = "cba";
  2. 配列

    C言語とは異なり、定義する際に左辺に要素数を書くことはない。

    int[] array = new int[5]; // 0で全部初期化される
    int[] array = {1,2,3}; // 要素数3で、内容を1,2,3で初期化
    int array[] = {1,3,4}; // []は後ろに書いてもよい
    int[][] array2d = new int[3][5]; // 2次元配列の定義
    int[][] array2d = {{1,2,3},{4,5},{6,7,8,9,10}}; // 各配列の中身は要素数は一定でなくても良い

    初期化する際に、整数や実数変数は0、boolean型変数はfalse、参照型変数はnullで初期化される。

    整数型配列は参照型であるが、配列の要素自体は基本データ型になる。

    参照型の配列は

    myClass[] myclass = new myClass[5];
    としただけでは、配列オブジェクトが生成されるだけで、各要素はnullのままである。myclass[0] = new myClass();のようにしてから利用可能になる。上で書いたように、変数宣言と、オブジェクトの生成を同時に行うこともできる。
    myClass[] myclass = {new myClass(),new myClass()};
  3. 引数

    メソッドに渡される引数はコピーされるので、呼んだメソッドで値を変更しても、オリジナルの値は変更されない。参照型、基本データ型のどちらの引数でもこの性質は同じ。

    参照型変数は、オブジェクトを指すものであり、コピーされると、同じオブジェクトを指していることになる。したがって、指しているオブジェクトの内容を変更することができる。

    引数にfinalを付けると、その引数はメソッド内でfinalになる。引数が参照型変数であった場合、オブジェクトは変更できないが、オブジェクトの値自体は変更可能である。

  4. ガーベージコレクション

    参照されなくなったオブジェクトは自動的に破棄されるが、このことをガーベージコレクションという。

    System.gc();、Runtime.getRuntime().gc();とすると、ガーベージコレクションを促すことができる。あくまでも促すだけであることに注意。

    Objectクラスにはfinalize()というメソッドが定義されており、このメソッドをオーバーライドすることで、ガーベージコレクションの前に、その内容を実行するようになる。メモリ以外のリソースの回収などに用いられる。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計