型は、値型と参照型の2種類に大別される。
値型は、変数にデータが直接格納され、参照型は、データへの参照が格納される。
また、後者はオブジェクトと呼ばれる。
参照型を使用すると、2つの変数が同じオブジェクトを参照できるため、一方の変数に対する操作が、もう一方の変数に影響を与える可能性がある。
値型では、変数はそれぞれ独自のデータを持っており、一方の操作が他方に影響を与えることはない。
Qsuは、任意の型の値をオブジェクトとして扱うことができる。
全ての型は、直接的または間接的にobject型から派生する。objectは全ての型の最基底クラスである。
参照型の値は、値をobject型として見るだけで、オブジェクトとして扱われ、値型の値は、Boxingによりオブジェクトとして扱われる。
参照型には、クラス型の1種類が存在する。
参照型の値は、型のインスタンスへの参照であり、オブジェクトと呼ばれる。
クラス型は、フィールド、メソッド、コンストラクターを含むデータ構造を定義し、また、継承を行うことができる。
表に示すように、事前定義されたクラス型は、特別な意味を持つ。
| クラス | 説明 |
|---|---|
| object | 他の全ての型の最基底クラス |
| string | Qsuでの文字列 |
参照型には、構造体型の1種類が存在する。
Qsuは、プリミティブ型と呼ばれる事前定義された構造体型を提供する。
値型の変数に代入すると、値のコピーが作成される。
これは、オブジェクトのコピーが行われない参照型の変数への代入とは異なる。
構造体型は、フィールド、メソッド、コンストラクターを宣言できる値型である。
以下は、プリミティブ型の一覧である。
Qsuは一般に構造体型のリテラルを規定していないが、プリミティブ型はリテラルを記述することで値を作成することができる。
整数型には、int, char の2種類が存在する。
int型は、-2147483648 から 2147483647 までの符号付き32ビット整数を表す。
char型は、0 から 65535 までの値を持つ符号なし16ビット整数を表す。