Javaプリミティブの概要
1. 概要
Javaプログラミング言語は、8つのプリミティブデータ型を備えています。
この記事では、プリミティブとは何かを思い出して、それらについて説明します。
2. プリミティブデータ型
Javaで定義されている8つのプリミティブは、int、byte、short、long、float、double、boolean、およびchar –これらはオブジェクトとは見なされず、生の値を表します。
They’re stored directly on the stack(Javaでのメモリ管理の詳細については、this articleを確認してください)。
ストレージサイズ、デフォルト値、および各タイプの使用方法の例を見てみましょう。
クイックリファレンスから始めましょう:
Type | サイズ(ビット) | 最小 | 最大 | 例 |
---|---|---|---|---|
byte |
8 |
-27 |
27– 1 |
バイトb = 100。 |
ショート |
16 |
-215 |
215– 1 |
短いs = 30_000; |
int |
32 |
-231 |
231– 1 |
int i = 100_000_000; |
long |
64 |
-263 |
263– 1 |
long l = 100_000_000_000_000; |
浮く |
32 |
-2-149 |
(2-2-23)・2127 |
float f = 1.456f; |
ダブル |
64 |
-2-1074 |
(2-2-52)・21023 |
ダブルf = 1.456789012345678; |
char |
16 |
0 |
216– 1 |
char c = ‘c'; |
ブール値 |
1 |
– |
– |
ブールb = true; |
2.1. int
ここで取り上げる最初のプリミティブデータ型はintです。 整数とも呼ばれるintタイプは、さまざまな非小数の数値を保持します。
具体的には、Java stores it using 32 bits of memoryです。 つまり、-2,147,483,648(-231)から2,147,483,647(231-1)までの値を表すことができます。
Java 8では、新しい特別なヘルパー関数を使用して、最大4,294,967,295(232-1)の符号なし整数値を格納できます。
intを簡単に宣言できます。
int x = 424_242;
int y;
割り当てなしで宣言されたintのデフォルト値は0です。
変数がメソッドで定義されている場合、使用する前に値を割り当てる必要があります。
intsですべての標準的な算術演算を実行できます。 整数でこれらを実行するときは、decimal values will be chopped offに注意してください。
2.2. byte
byteは、it only takes up 8 bits of memoryを除いて、intと同様のプリミティブデータ型です。 したがって、なぜそれをバイトと呼ぶのか。 メモリサイズが非常に小さいため、byteは-128(-27)から127(27 – 1)までの値しか保持できません。
byteを作成できます:
byte b = 100;
byte empty;
byteのデフォルト値も0です。
2.3. short
Javaのプリミティブデータ型のリストで次に停止するのはshortです。
メモリを節約したいが、byteが小さすぎる場合は、2つの中間のタイプshortを使用できます。
16ビットのメモリでは、intの半分のサイズとbyteの2倍のサイズです。 可能な値の範囲は-32,768(-215)から32,767(215 – 1)です。
shortは次のように宣言されます:
short s = 202_020;
short s;
他のタイプと同様に、デフォルト値は0です。 同様にすべての標準的な算術を使用できます。
2.4. long
整数に関連する最後のプリミティブデータ型はlongです。
longはintの兄貴です。 It’s stored in 64 bits of memoryなので、可能な値のかなり大きなセットを保持できます。
longの可能な値は、-9,223,372,036,854,775,808(-263)から9,223,372,036,854,775,807(263 – 1)の間です。
単純に宣言できます:
long l = 1_234_567_890;
long l;
他の整数型と同様に、デフォルトも0です。 intで機能するlongですべての算術を使用できます。
2.5. float
floatタイプを使用して、Javaで基本的な小数を表します。 これは単精度の10進数です。 つまり、小数点以下6桁を超えると、この数値は精度が低くなり、推定値が大きくなります。
ほとんどの場合、精度の低下は気にしません。 ただし、計算に絶対的な精度が必要な場合(つまり、金融業務、月面着陸など)、この作業用に設計された特定のタイプを使用する必要があります。 詳細については、JavaクラスBig Decimalを確認してください。
This type is stored in 32 bits of memory just like int.ただし、小数点が浮動小数点であるため、その範囲は大きく異なります。 正数と負数の両方を表すことができます。 最小の小数は1.40239846x 10-45で、最大の値は3.40282347 x 1038です。
floatsを他のタイプと同じように宣言します。
float f = 3.145f;
float f;
And the default value is 0.0 instead of 0。 また、浮動小数点数を定義するために、リテラル番号の末尾にf指定を追加していることに注意してください。 それ以外の場合、10進値のデフォルトのタイプはdoubleであるため、Javaはエラーをスローします。
floatsですべての標準的な算術演算を実行することもできます。 ただし、浮動小数点演算の実行方法は整数演算とは大きく異なることに注意してください。
2.6. double
次に、doubleを確認します。その名前は、倍精度の10進数であるという事実に由来しています。
It’s stored in 64 bits of memory.これは、floatよりもはるかに広い範囲の可能な数値を表すことを意味します。
ただし、floatと同じ精度制限があります。 範囲は4.9406564584124654x 10-324〜1.7976931348623157 x 10308です。 その範囲は正でも負でもかまいません。
doubleの宣言は、他の数値タイプと同じです。
double d = 3.13457599923384753929348D;
double d;
The default value is also 0.0 as it is withfloat.float,と同様に、文字Dを付加して、リテラルをdoubleとして指定します。
2.7. boolean
最も単純なプリミティブデータ型はbooleanです。 含めることができる値は、trueまたはfalseの2つだけです。 It stores its value in a single bit.
ただし、便宜上、Javaは値をパディングし、1バイトに格納します。
次のようにbooleanを宣言します。
boolean b = true;
boolean b;
値なしで宣言すると、デフォルトでfalseになります。 booleanは、プログラムフローを制御するための基礎です。 それらにブール演算子を使用できます(つまり、and, or,など)。
2.8. char
確認する最後のプリミティブデータ型はcharです。
文字とも呼ばれるcharは、Unicodeでエンコードされた文字を表す16ビット整数です。 範囲は0〜65,535です。 Unicodeでは、これは‘ 'から‘'を表します。
可能なすべてのUnicode値のリストについては、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はこの変換を自動的に実行できます。 このプロセスをAutoboxingと呼びます。 これが一例です。
Character c = 'c';
Integer i = 1;
3. 結論
このチュートリアルでは、Javaでサポートされている8つのプリミティブデータ型について説明しました。
これらは、すべてではないがほとんどのJavaプログラムで使用される構成要素であるため、それらがどのように機能するかを理解する価値があります。