0
1

More than 1 year has passed since last update.

【Java文法】データ型

Last updated at Posted at 2022-01-06

こんにちは、コイキングです。

本記事では'データ型'について、説明したいと思います。


1.データ型とは?

変数がどの様なタイプのデータかを示すのがデータタイプと言えます。
Javaでデータ型は大きく 'プリミティブ型'と'参照型' に分けられます。

2. プリミティブ型

プリミティブ型は 変数に値の実体が格納される データ型です。
因みに '変数に格納される値の実体'をリテラル と言います。

Javaでプリミティブのデータ型は8つありまして、詳しくは以下の表を参考にしてください。

※ Javaのプリミティブデータ型

データの分類 データ型 メモリー空間 値の表現範囲 解説
整数 byte 1 byte -128 ~ 127 整数データを入れられるデータ型、最も多く使われているのはint型
short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648 ~ 2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808
浮動小数点数 float 4 byte 1.4E-045 ~ 3.4E+038 浮動小数点数データを入れられるデータ型、最も多く使われているのはdouble型
double 8 byte 4.9E-324 ~ 1.8E+308
文字 char 2 byte 0 ~ 65,535のユニコード文字 シングルクォーテーション('')で囲むユニコード文字1個を入れられるデータ型
論理 boolean 1 byte true 又は false 真(true)か偽(false)の値が入れられるデータ型

同じデータ類のデータ型が複数存在する理由
整数データの場合、データ型がbyte, short, int, long4つ存在します。
結論から言いますと、データ型が複数存在する理由はメモリー空間の効率良く使うためです。

例えると整数データを入れるための'変数a'があると仮定してみましょう。
また変数aに代入する値は絶対に127を超えないという条件がある状態で、変数aのデータ型をlongにしたら、変数aが占めるメモリー空間は8 byteになります。

longの代わりに変数aのデータ型をbyteにしたら、変数aが占めるメモリー空間は1 byteになります。longにしたら占めるメモリー空間が8倍も多くなるのですが、今の時代のハードウェアでは変数1個2個ぐらいはあまりメモリ問題にはならないと思います。しかし、変数を数百、数千個を使うのであればメモリーの無駄使いになり、メモリーリークになりがちです。

各データ型別で変数を宣言して、初期化してみる

// 変数宣言
short short1;
int int1;
long long1;
float float1;
double double1;
char char1;
byte byte1;
boolean boolean1;

// データ型別値代入
byte1 = 1;
short1 = 1;
int1 = 2;
long1 = 4L;
float1 = 0.4f;
double1 = 0.4;
char1 = 'a';
boolean1 = true;

3.参照型

参照型はJavaの1) ライブラリ又は2)プログラマーが直接実装したクラスやインターフェースを変数のデータ型にすることを言います。

参照型がプリミティブ型と違い、変数にリテラルが格納されるのではなく、インスタンスのメモリー住所の値が格納されます。

'new'オペレーターを使い、インスタンスを生成し、インスタンスのメモリー住所の値を参照型の変数に格納できます。

1) ライブラリクラス

// [クラス名] [変数名] = new [コンストラクター()];
Object object = new Object();
System.out.println(object); // java.lang.Object@{Heapのメモリー住所}

2) プログラマーが実装したクラス

TestDataType tdt = new TestDataType(100, "test");
System.out.println(tdt);  //basic.TestDataType@{Heapのメモリー住所}

class TestDataType{

    int testInt;
    String testStr;

    public TestDataType(int testInt, String testStr) {
        this.testInt = testInt;
        this.testStr = testStr;
    }
}

※Stringクラスはプリミティブ型の様に値を直接代入する事ができます。

// StringリテラルはHeapの"String Constant Pool"に入る
String str1 = "string1";

// 'new'オペレーターを使うとHeapにインスタンス生成
String str2 = new String("string2");

※例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_03_DataType.java

※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/75?category=1068655

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1