Javaのお勉強その3
- データ型
 基本データ型と、参照型の2種類がある。 
 参照型はクラス、インタフェース、配列変数であり、それ以外(int型など)は基本データ型になる。 
 String型(参照型)は特殊で、いったん生成すると、内部状態を変更することはできない。以下のようにしても、s2の値自体はabcのままである。 
 String s1 = "abc"; String s2 = s1; s1 = "cba"; 
- 配列
 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()};
- 引数
 メソッドに渡される引数はコピーされるので、呼んだメソッドで値を変更しても、オリジナルの値は変更されない。参照型、基本データ型のどちらの引数でもこの性質は同じ。 
 参照型変数は、オブジェクトを指すものであり、コピーされると、同じオブジェクトを指していることになる。したがって、指しているオブジェクトの内容を変更することができる。 
 引数にfinalを付けると、その引数はメソッド内でfinalになる。引数が参照型変数であった場合、オブジェクトは変更できないが、オブジェクトの値自体は変更可能である。 
 
- ガーベージコレクション
 参照されなくなったオブジェクトは自動的に破棄されるが、このことをガーベージコレクションという。 
 System.gc();、Runtime.getRuntime().gc();とすると、ガーベージコレクションを促すことができる。あくまでも促すだけであることに注意。 
 Objectクラスにはfinalize()というメソッドが定義されており、このメソッドをオーバーライドすることで、ガーベージコレクションの前に、その内容を実行するようになる。メモリ以外のリソースの回収などに用いられる。 
 

 
0 件のコメント:
コメントを投稿