Javaプリミティブの概要
1. 概要
Javaプログラミング言語は、8つのプリミティブデータ型を備えています。
このチュートリアルでは、これらのプリミティブが何であるかを見て、各タイプについて説明します。
2. プリミティブデータ型
Javaで定義されている8つのプリミティブは、 int 、 byte 、 short 、 long 、 float 、です。 double 、 boolean 、およびchar。 これらはオブジェクトとは見なされず、生の値を表します。
スタックに直接保存されます(Javaのメモリ管理の詳細については、この記事を確認してください)。
ストレージサイズ、デフォルト値、および各タイプの使用方法の例を見ていきます。
クイックリファレンスから始めましょう:
タイプ | サイズ(ビット) | 最小 | 最大 | 例 |
---|---|---|---|---|
バイト | 8 | -2 7 | 2 7 – 1 | バイトb=100; |
短い | 16 | -2 15 | 2 15 – 1 | 短いs=30_000; |
int | 32 | -2 31 | 2 31 – 1 | int i = 100_000_000; |
長いです | 64 | -2 63 | 2 63 – 1 | long l = 100_000_000_000_000; |
浮く | 32 | -2 -149 | (2-2 -23 )・2 127 | float f = 1.456f; |
ダブル | 64 | -2 -1074 | (2-2 -52 )・2 1023 | ダブルf=1.456789012345678; |
char | 16 | 0 | 2 16 – 1 | char c =’c’; |
ブール値 | 1 | – | – | ブールb=true; |
2.1. int
ここで取り上げる最初のプリミティブデータ型はintです。 整数とも呼ばれるintタイプは、さまざまな非小数の数値を保持します。
具体的には、 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ですべての標準的な算術演算を実行できます。 整数でこれらを実行する場合、10進値が切り取られることに注意してください。
2.2. バイト
byte は、 int に似たプリミティブデータ型ですが、は8ビットのメモリしか使用しません。これがバイトと呼ばれる理由です。 メモリサイズが非常に小さいため、 byte は-128(-2 7 )から127(2 7 – 1)の値しか保持できません。
バイトを作成する方法は次のとおりです。
byte b = 100;
byte empty;
byteのデフォルト値も0です。
2.3. 短い
Javaのプリミティブデータ型のリストの次のストップはshortです。
メモリを節約したいが、 byte が小さすぎる場合は、byteとintの中間のタイプshortを使用できます。
16ビットのメモリでは、 int の半分のサイズであり、byteの2倍のサイズです。 可能な値の範囲は、-32,768(-2 15 )から32,767(2 15 – 1)です。
shortは次のように宣言されます。
short s = 20_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. フロート
float タイプを使用して、Javaで基本的な小数を表します。 これは単精度の10進数です。 これは、小数点以下6桁を超えると、数値の精度が低下し、推定値が高くなることを意味します。
ほとんどの場合、精度の低下は気にしません。 ただし、計算に絶対的な精度が必要な場合(たとえば、財務操作、月面着陸など)、この作業用に設計された特定のタイプを使用する必要があります。 詳細については、Javaクラス BigDecimalを確認してください。
このタイプはintと同じように32ビットのメモリに格納されます。ただし、小数点が浮動小数点であるため、その範囲は大きく異なります。 正の数と負の数の両方を表すことができます。 最小の小数は1.40239846×10 -45 で、最大の値は3.40282347 x 10 38です。
float は、他のタイプと同じであると宣言します。
float f = 3.145f;
float f;
デフォルト値は0ではなく0.0です。また、リテラル番号の末尾に f 指定を追加して、浮動小数点数を定義していることに注意してください。 そうしないと、10進値のデフォルトのタイプが double であるため、Javaはエラーをスローします。
floatですべての標準的な算術演算を実行することもできます。 ただし、浮動小数点演算の実行方法は整数演算とは大きく異なることに注意してください。
2.6. ダブル
次に、doubleを見てみましょう。 その名前は、倍精度の10進数であるという事実に由来しています。
64ビットのメモリに格納されます。これは、floatよりもはるかに広い範囲の可能な数値を表すことを意味します。
ただし、floatと同じ精度の制限があります。 範囲は4.9406564584124654×10 -324から1.7976931348623157×10 308です。 その範囲は、正または負の場合もあります。
double の宣言は、他の数値タイプと同じです。
double d = 3.13457599923384753929348D;
double d;
デフォルト値も0.0です。 浮く
2.7. ブール値
最も単純なプリミティブデータ型はbooleanです。 trueまたはfalseの2つの値のみを含めることができます。 その値を1ビットに格納します。
ただし、便宜上、Javaは値をパディングし、1バイトに格納します。
booleanを宣言する方法は次のとおりです。
boolean b = true;
boolean b;
値なしで宣言すると、デフォルトでfalseになります。 boolean は、プログラムフローを制御するための基礎です。 それらにブール演算子を使用できます(たとえば、と、またはなど)。
2.8. char
確認する最後のプリミティブデータ型はcharです。
文字とも呼ばれるcharは、Unicodeでエンコードされた文字を表す16ビット整数です。 その範囲は0〜65,535です。 Unicodeでは、これは‘\u0000’から‘\uffff’を表します。
可能なすべてのUnicode値のリストについては、 UnicodeTableなどのサイトを確認してください。
charを宣言しましょう。
char c = 'a';
char c = 65;
char c;
変数を定義するときは、任意の文字リテラルを使用でき、それらは自動的にUnicodeエンコーディングに変換されます。 文字のデフォルト値は‘/u0000’です。
2.9. オーバーフロー
プリミティブデータ型にはサイズ制限があります。 しかし、最大値よりも大きい値を格納しようとするとどうなりますか?
オーバーフローという状況に遭遇します。
整数がオーバーフローすると、最小値にロールオーバーし、そこからカウントアップを開始します。
Infinityを返すことにより、浮動小数点数がオーバーフローします。
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
アンダーフローは、最小値よりも小さい値を格納する必要があることを除いて、同じ問題です。 数値がアンダーフローすると、0.0を返します。
2.10. オートボクシング
各プリミティブデータ型には、それをラップできる完全なJavaクラス実装もあります。 たとえば、Integerクラスはintをラップできます。 プリミティブ型からそのオブジェクトラッパーに変換する必要がある場合があります(たとえば、 generics でそれらを使用する)。
幸い、Javaはこの変換を自動的に実行できます。これはAutoboxingと呼ばれるプロセスです。
Character c = 'c';
Integer i = 1;
3. 結論
この記事では、Javaでサポートされている8つのプリミティブデータ型について説明しました。
これらは、すべてではないにしてもほとんどのJavaプログラムで使用される構成要素であるため、それらがどのように機能するかを理解する価値があります。