ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

プリミティブ型変数ってなんだ? オブジェクト型に対する基本型

プログラミング

変数の型でプリミティブ型と呼ばれるワードが出てきますが、なんてことない従来の昔からある変数の型のことです。

なんでそんなワードが出来たのかといえば、従来の型とはちがうオブジェクト型が登場したから。

オブジェクト指向言語がメジャーになったから出てきた言葉。

プリミティブ型は昔からある基本型

プリミティブ型を一言で言えば、クラスオブジェクトじゃないデータの型。

int, short, long, float, double, char などのこと。言語によっては byte, boolean もありますね?

primitive は『原始的な。素朴な。』などの意味で、そこから基本型とも言われます。

クラスを使ったプログラミング言語がどこでも見られメジャーになったのは2000年代に入ってから。JavaやC++が大きく貢献しました。

オブジェクト型という考え方自体が後発組です。

なので、先発組のデータ型のことをオブジェクト型に対してプリミティブ型と呼ぶようになりました。

プリミティブ型は先発のグループ名みたいなものですが、オブジェクト型もグループ名です。

オブジェクト型はクラスそのもの。クラスはそれ自体がデータ型。

クラスはそれ自体がデータの型です。オブジェクト指向言語では、クラスの数だけオブジェクト型の型があります。

今では、PHPやJavaScriptなど、クラスでプログラミングしそうにないものの公式ドキュメントでもプリミティブ型というワードが出てきます。

それだけ、クラスでプログラミングするのが浸透したということ。

WordPressの有名なプラグインはクラスベースで書かれてるし、JavaScriptもReactなどのフレームワークではクラスが多用されてます。

Pythonだってクラスを使います。

オブジェクト指向では書く量も多いし覚えることもそれなりにあるので、初心者を中心に避ける人がいますが、もう逃れようがありません。

クラスは必要な情報を必要なときだけ公開する情報隠蔽が基本に設計されているのでセキュリティ的にも強いし。

プリミティブ型int
short
long
float
double
char

boolean
byte
などがある言語もある。
オブジェクト型クラスのこと。

用意されたクラスに加え、自作した
クラスの数だけデータ型がある。

String型はプリミティブではなくオブジェクト型

Javaでは文字列変数の型としてStringを使いますが、これはプリミティブではありません。Stringというクラスの型です。

Stringは直接リテラル文字列を代入することができます。

String str1 = "sample1";
String str2 = null;

str2 = str1;

これがプリミティブに見えてしまうんですが、内部では new String() を使ってインスタンスを作成して変数に代入しています。

Stringは頻繁に使うので、プリミティブのように代入できるように設計されてる。

親切な設計なんですが、かんちがいしやすい。

ちなみにJavaには、プリミティブ型のデータを管理する、Integer, Short, Long, Byte, Boolean, Float, Doubleなどのクラスがあります。

これらのクラスはかんたんに型変換(byte -> int, int -> Stringなど)できるメソッドが用意されているので便利。

JavaScriptにもStringというクラスがある。これも文字列を扱うオブジェクト型。

ただしJSでは、リテラル文字列をString型変数に代入できない。変数の型がゆるいので、その時点で型変換が起きるから。

JSでは、new String() でインスタンス生成を明示しないといけない。

前の投稿
ユーザーCPU時間とシステムCPU時間って何がちがう?(プログラムが独り占めするひととき)
シャローコピーとディープコピーってなんだ? オブジェクト指向がややこしくしている。
次の投稿

コメントを残す