プリミティブ型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/09/06 12:12 UTC 版)
![]() |
プリミティブ型またはプリミティブデータ型(英: primitive data type)は、データ型の分類用語であり、データ型の中で最も基本的なものを指している。基本データ型(basic data type)とも言われる[1]。直訳して原始型と呼ばれることもある。
対義的な分類用語は、複合データ型(composite data type)である。コンポジット型、コンポジットデータ型、あるいは複合型とも呼ばれる。複合データ型は、プリミティブ型および複合データ型の構造的または再帰的な組み合わせ(コンポジション)で形成されるデータ型である。なお、「コンポジットデータ型」という用語は、PL/SQLにおける「スカラーデータ型」の対義語としても用いられている[2]。
プログラミング言語の仕様に組み込まれる形で標準的に用意されている組み込み型(built-in type)[3]には、通常複合データ型が含まれるが、それらをプリミティブ型と同様に扱う場合もある。
概要
プログラミング言語理論や理論計算機科学における代数的データ型の視点では、「そのデータ型の定義の中に構成要素として自身あるいは他のデータ型を含まない型」がプリミティブ型である。プリミティブ型はCPUが直接処理できるデータ型という含意があるため、Python などの高級言語ではプリミティブ型という概念は隠蔽されがちである。
通常プリミティブ型として扱われる型の例:
- 文字型 (
character
,char
) - 1バイトの文字型のほか、2バイトや4バイトの文字型が用意されていることもある。文字セット(エンコーディング)は言語や処理系に依存するが、UTF-8、UTF-16やUTF-32によるUnicodeのサポートが一般的。文字型の配列によって文字列型が実装されている言語もある。 - 整数型 (
integer
,int
,short
,long
,byte
) - 各種のサイズがあるが、1, 2, 4, 8バイトの整数型が用意されていることが多い。符号付きのほか、符号無しの型が用意されていることもある。 - 浮動小数点数型 (
float
,single
,double
,real
,double precision
) - 各種のサイズがあるが、IEEE 754に準拠した単精度と倍精度の浮動小数点数型が用意されていることが多い。 - 固定小数点数型 (
fixed
) - 各種の固定精度やスケール指定可能なものがある。 - ブーリアン型 (
boolean
,bool
) - 真値 (true) または偽値 (false) をとるブール代数型。
プリミティブ型が最も高速な演算を行える言語構成要素である場合が多い。例として整数の加算は、単一マシン命令として演算され、プロセッサによっては単一マシン命令で文字列を処理する具体的な命令を提供している。特に、C言語標準では「plainなint型オブジェクトのサイズは実行環境のアーキテクチャに依存する」とされている。これは、32ビットアーキテクチャではint型が32ビットになりえることを意味する。
組み込み型
組み込み型はプログラミング言語にあらかじめ組み込まれているデータ型である。上記のプリミティブ型に加えて、以下のような型が組み込み型として用意されている場合がある。
ポインタ型や参照型では、プリミティブ型よりも大きなサイズのオブジェクトを指し示すことができる。ハンドル型と呼ばれることもあるが、内部的にはポインタあるいは参照と等価であることが多い。
通常参照型として扱われる組み込み型の例:
言語ごとのプリミティブ型
Smalltalkのプリミティブ型
Smalltalkではプログラムによって拡張されたプリミティブデータ型を許可しており、それらの型の演算命令を追加することもでき、場合によっては言語固有の演算命令を再定義することもできる。
Javaのプリミティブ型
Javaでは以下の型をプリミティブデータ型として規定している[4]。
型名 | 説明 |
---|---|
byte |
符号付き8ビット整数型 |
short |
符号付き16ビット整数型 |
int |
符号付き32ビット整数型 |
long |
符号付き64ビット整数型 |
float |
32ビット単精度浮動小数点数型 |
double |
64ビット倍精度浮動小数点数型 |
boolean |
ブーリアン型 |
char |
16ビットUnicode (UTF-16) 文字型 |
Javaのプリミティブ型はオブジェクトではないため、そのままでは配列以外のコレクションに格納することができない。プリミティブ型をラップしてオブジェクトとして扱えるようにするため、各プリミティブ型にはプリミティブラッパークラスが用意されている。
.NETのCLRプリミティブ型
.NET Framework/.NET Coreの共通言語ランタイム (CLR/CoreCLR) では、System.Type.IsPrimitive
プロパティによって、型がCLRプリミティブ型であるかどうかを判定できる[5]。各.NET言語の組み込みの値型は必ずしもCLRプリミティブ型ではないが、CLRプリミティブ型はすべて値型である。
例えば、十進浮動小数点数型System.Decimal
は値型(構造体)であり、C#の組み込み型decimal
でもあるが、CLRプリミティブ型ではない。ポインタまたはハンドルを表すときに使用されるプラットフォーム固有の型System.IntPtr
は値型であり、CLRプリミティブ型でもあるが、C#の組み込み型ではない(C# 9.0以降はnint
として組み込み型となった[6])。
CLRプリミティブ型は共通中間言語 (CIL) 上で専用の命令を持つなどの特別な性質がある。
ECMAScriptのプリミティブ値
ECMAScript (JavaScript) におけるプリミティブ値はUndefined
, Null
, Boolean
, Number
, BigInt
, Symbol
および String
の7種類である[7]。
脚注
注釈
出典
- ^ プリミティブ型(組み込みデータ型)とは - IT用語辞典 e-Words
- ^ PL/SQLのデータ型
- ^ 組み込み型 - C# リファレンス | Microsoft Docs
- ^ Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)
- ^ Type.IsPrimitive Property (System) | Microsoft Docs
- ^ nint 型と nuint 型 - C# リファレンス | Microsoft Docs
- ^ member of one of the types Undefined, Null, Boolean, Number, BigInt, Symbol, or String ECMA-262::4.4.5 primitive value
関連項目
プリミティブ型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 02:09 UTC 版)
primitive data typeもしくはprimitive typeとも。プリミティブ型はオブジェクトではなく、スーパークラスを持たない。 整数型byte8ビット符号付き short16ビット符号付き int32ビット符号付き long64ビット符号付き 注 オーバフローは例外等にはならず、2の補数として自然な形でラップアラウンド (wrap around) する。例えば、Integer.MAX_VALUE (= 231−1) に1を加えると、結果はInteger.MIN_VALUE (= −231) になる。 浮動小数点数型float32ビット符号付き double64ビット符号付き 注 浮動小数点数は決して例外をスローしない 0でない値を0(ゼロ)で割った値はInf(無限大)と等値である 無限大でない値をInfで割った値は0(ゼロ)と等値である。 文字char16ビット符号無しUnicode 注 J2SE v 1.4.2までのcharは基本多言語面 (BMP) の範囲内のコードポイントを符号無し16ビットで表現する。 J2SE 5.0からは、補助文字をサポートするため、charは符号無し16ビットで表現可能でありBMPの範囲内に限ればコードポイントと同値となるUTF-16符号化形式のコード単位を表現するように変更され、21ビットが必要となるコードポイントの表現にはintを使用するように変更された(JSR#204)。つまりchar型は互換性の問題からあくまで符号無し16ビットのままとされており、UTF-16符号化形式を採用したことから補助文字を扱う場合はコードポイント一つにコード単位を格納したchar値のペアが対応する。これらを適切に取り扱う便宜として、StringクラスやプリミティブラッパークラスであるCharacterクラスなどの各種メソッドが利用できる。 ブーリアン型booleantrue または false 注 C/C++や類似の言語と異なり、Javaではfalseの代わりに0(ゼロ)またはnullと書くことはできない 同様に、0でない値を書いてtrueの代わりとすることはできない ブール型をブール型でない基本型へキャストすることとその逆はできない
※この「プリミティブ型」の解説は、「Javaの文法」の解説の一部です。
「プリミティブ型」を含む「Javaの文法」の記事については、「Javaの文法」の概要を参照ください。
固有名詞の分類
- プリミティブ型のページへのリンク