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 件のコメント:
コメントを投稿