1.概要

Javaプログラミング言語には、8つの基本データ型があります。

この記事では、プリミティブとは何かを思い出して、それを調べます。

2.プリミティブデータ型

Javaで定義されている8つのプリミティブは、

int



byte



short



long



float



double



boolean

、および__charです。これらはオブジェクトとは見なされず、生の値を表します。

  • それらはスタックに直接格納されています** (Javaでのメモリ管理についての詳細はリンク:/java-initialization[この記事]をチェックしてください)。

ストレージサイズ、デフォルト値、各タイプの使用方法の例を見てみましょう。

クイックリファレンスから始めましょう。

| =================================================== ==================== |タイプ|サイズ(ビット)|最小|最大|例|

byte

| 8 | -2 ^ 7 ^ | 2 ^ 7 ^ – 1 |

byte b = 100;

|

short

| 16 | -2 ^ 15 ^ | 2 ^ 15 ^ – 1 |

短いs = 30

000; __

|

int

| 32 | -2 ^ 31 ^ | 2 ^ 31 ^ – 1 |

int i = 100

000

000;

|

long

| 64 | -2 ^ 63 ^ | 2 ^ 63 ^ – 1 |

long l = 100

000

000

000

000;

|

float

| 32 | -2 ^ -149 ^ |(2-2 ^ -23 ^)・2 ^ 127 ^ |

float f = 1.456f;

|

double

| 64 | -2 ^ -1074 ^ |(2-2 ^ -52 ^)・2 ^ 1023 ^ |

double f = 1.456789012345678;

|

char

| 16 | 0 | 2 ^ 16 ^ – 1 |

char c = ‘c’;

|

boolean

| 1 | – | – |

boolean b = true;

| ====================================== =====================================

2.1.

int

最初に扱うデータ型は

int

です。整数とも呼ばれる

int

typeは、広範囲の非小数値を保持します。

具体的には、

Javaは32ビットのメモリ

を使用してそれを格納します。つまり、-2,147,483,648(-2 ^ 31 ^)から2,147,483,647(2 ^ 31 ^ -1)までの値を表すことができます。

Java 8では、新しい特別なヘルパー関数を使用して、最大4,294,967,295(2 ^ 32 ^ -1)までの符号なし整数値を格納することができます。

単純に

int

を宣言するだけです。

int x = 424__242;

int y;

代入なしで宣言された

int

のデフォルト値は0です。

変数がメソッド内で定義されている場合は、使用する前に値を代入する必要があります。


__int

__sに対してすべての標準算術演算を実行できます。整数でこれらを実行する場合、10進値は切り捨てられることに注意してください。

2.2.

バイト


byte



int

に似たプリミティブデータ型ですが、

8ビットのメモリしか占有しない

ことを除いて。それで、なぜ我々はそれをバイトと呼ぶのか。メモリサイズが非常に小さいので、

byte

は-128(-2 ^ 7 ^)から127(2 ^ 7 ^ – 1)までの値しか保持できません。


byte

を作成することができます。

byte b = 100;

byte empty;


  • byte

    のデフォルト値も0です。**

2.3.

ショート

Javaでのプリミティブデータ型のリストの次のストップは

short

です。

メモリを節約したいが

byte

が小さすぎる場合は、2つの間の半分の型を使用できます。

16ビットのメモリでは、それは

int

の半分のサイズと

byte

の2倍のサイズです。可能な値の範囲は、-32,768(-2 ^ 15 ^)から32,767(2 ^ 15 ^ – 1)です。


short

は次のように宣言されています。

short s = 202__020;

short s;

他の型と同様に、デフォルト値は0です。標準の算術演算もすべて使用できます。

2.4.

長いです

整数に関連する最後のプリミティブデータ型は

long

です。


long



int

の兄弟です。 ** これは64ビットのメモリに保存されるため、かなり大きな値のセットを保持できます。

longの可能な値は-9,223,372,036,854,775,808(-2 ^ 63 ^)から9,223,372,036,854,775,807(2 ^ 63 ^ – 1)までです。

単純に宣言することができます。

long l = 1__234__567__890;

long l;

他の整数型と同じように、デフォルトも0です。

int

で機能するすべての算術を

long

で使用できます。

2.5.

浮く

Javaでは、

float

型を使用して基本的な小数値を表します。

これは単精度10進数です。つまり、6つの小数点を過ぎると、この数はそれほど正確ではなくなり、より推定になります。

ほとんどの場合、精度の低下については気にしません。しかし、もし私たちの計算が絶対的な正確さを必要とするならば(すなわち、金融業務、月面着陸など)、この仕事のために設計された特定のタイプを使う必要があります。詳しくは、Javaクラス・リンク/java-bigdecimal-biginteger[Big Decimal]を調べてください。

  • この型は

    int

    と同様に32ビットのメモリに格納されます。** ただし、浮動小数点のため、その範囲は大きく異なります。正数と負数の両方を表すことができます。最小10進数は1.40239846 x 10 ^ -45 ^、最大値は3.40282347 x 10 ^ 38 ^です。


__float

__は他の型と同じように宣言します。

float f = 3.145f;

float f;

  • そしてデフォルト値は0 ** ではなく0.0です。また、floatを定義するために、リテラル番号の末尾に

    f

    指定を追加しています。

それ以外の場合、デフォルト値の10進値の型は

double

であるため、Javaはエラーをスローします。


__float

__sに対してすべての標準算術演算を実行することもできます。

ただし、浮動小数点演算は整数演算とは非常に異なる方法で実行されることに注意することが重要です。

2.6.

ダブル

次に、

double

を見てください。その名前は倍精度の10進数であるという事実から来ています。

  • これは64ビットのメモリに格納されています。

ただし、

float

と同じ精度制限があります。範囲は4.9406564584124654 x 10 ^ -324 ^から1.7976931348623157 x 10 ^ 308 ^です。その範囲は、正または負にすることもできます。


double

の宣言は他の数値型と同じです。

double d = 3.13457599923384753929348D;

double d;


  • __

    floatと同じように、デフォルト値も0.0です。

2.7.

ブール値

最も単純なプリミティブデータ型は

boolean

です。

true

または

false

の2つの値のみを含めることができます。値を1ビットに格納します。

ただし、便宜上、Javaは値を埋め込み、1バイトに格納します。

以下のように

boolean

を宣言します。

boolean b = true;

boolean b;

値なしで宣言すると、デフォルトの

false

になります。

boolean

は、プログラムフローを制御するための基礎です。それらにはブール演算子を使用できます(つまり、

and、or、

など)。

2.8.

char

調べる最後のプリミティブデータ型は

char

です。


char

は、文字とも呼ばれ、Unicodeでエンコードされた文字を表す16ビット整数です。範囲は0〜65,535です。 Unicodeでは、「\ u0000」〜「\ uffff」を表します。

可能なすべてのUnicode値のリストについては、https://unicode-table.com/en/[Unicode Table]のようなサイトをチェックしてください。

それでは、

char

を宣言しましょう。

char c = 'a';

char c = 65;

char c;

変数を定義するときには、任意の文字リテラルを使用でき、それらは自動的にUnicodeエンコーディングに変換されます。文字のデフォルト値は__ ʻ/u0000’です。

2.9. オーバーフロー

プリミティブデータ型にはサイズ制限があります。しかし、最大値よりも大きい値を保存しようとするとどうなりますか。


  • overflow

    という状況に遭遇しました。

整数がオーバーフローすると、最小値までロールオーバーし、そこからカウントアップを開始します。

Infinityを返すことで浮動小数点数がオーバーフローしました。アンダーフローすると、0.0を返します。

例を示しましょう。

int i = Integer.MAX__VALUE;
int j = i + 1;//j will roll over to -2__147__483__648

double d = Double.MAX__VALUE;
double o = d + 1;//o will be Infinity


Underflow

は、最小値よりも小さい値を格納する場合を除き、同じ問題です。

2.10. オートボクシング

各プリミティブデータ型には、それをラップできる完全なJavaクラス実装もあります。たとえば、

Integer

クラスは

int

をラップできます。プリミティブ型からそのオブジェクトラッパーに変換する必要がある場合があります(たとえば、それらを

generics

で使用するなど)。

幸いなことに、Javaは自動的にこの変換を実行できます。このプロセスを「自動ボクシング」と呼びます。これが一例です。

Character c = 'c';

Integer i = 1;

3.まとめ

このチュートリアルでは、Javaでサポートされている8つの基本データ型について説明しました。

これらは、世界中のすべてのJavaプログラムの中ではなく、大部分で使用されている構成要素です。したがって、それらがどのように機能するかを理解する価値があります。