今回はもう一つの型、クラス型について説明します。
クラス型は、その名の通りクラスが元になっている型のことです。Javaにはクラスが山ほどあるので、クラス型は沢山あります。
その中でも、今回は最もよく使われるString型を扱います。クラス型変数を宣言する方法はプリミティブ型の場合と同じです。
型名 変数名;
実際は宣言時に初期化する場合が多く、
型名 変数名=new 型名(コンストラクタ引数...);
と書きます。プリミティブ型変数は変数自体に値が記録されますが、クラス型変数の場合は「メモリ上の値が記録される場所」が記録されます。C言語のポインタのようなものです。ですから、クラス型変数を初期化するにはnewという演算子を使用し、クラス型に応じたメモリ領域を確保する必要があります(new演算子はC言語のmalloc関数に相当します。コンストラクタ引数には、クラス型変数を初期化するときに必要な情報を渡します。コンストラクタ引数がない場合もあります。コンストラクタについては、5章で説明します。
String型の場合はコンストラクタ引数に文字列を渡すと、その文字列で初期化されます。String型のみ、new演算子を使用しなくても直接文字列で初期化できます。
実行結果
s=
t=Hello
u=World
以下にプリミティブ型とクラス型の違いを示します。メソッドやジェネリクスについては後の章で説明します。
プリミティブ型 | クラス型 | |
数 | 8種類のみ | 無数にある |
自作できるか? | 不可能 | 自作できる |
頭文字 | アルファベット小文字 | アルファベット大文字が多い |
メソッドの引数の参照 | 数値渡し | 参照渡し |
ジェネリクスの型引数 | 使用できない(ラッパクラスを利用する) | 使用できる |
コメント