Javaプリミティブの紹介
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プログラムの中ではなく、大部分で使用されている構成要素です。したがって、それらがどのように機能するかを理解する価値があります。