1. プリミティブ型の一覧
Java には 8 つの基本的なプリミティブ型があります。これらの型の値はオブジェクトではなく、変数内に直接格納されるため、プリミティブと呼ばれます。
これらのタイプに関する簡単な情報をまとめた表を次に示します。
タイプ | バイト単位の サイズ |
値の範囲 | デフォルト値 | 説明 |
---|---|---|---|---|
byte |
1 | -128 .. 127 | 0 |
最小の整数型はシングルバイトです |
short |
2 | -32,768 .. 32.767 | 0 |
短整数、2 バイト |
int |
4 | -2*10 9 .. 2*10 9 | 0 |
整数、4バイト |
long |
8 | -9*10 18 .. 9*10 18 | 0L |
長整数、8 バイト |
float |
4 | -10 38 .. 10 38 | 0.0f |
浮動小数点数、4バイト |
double |
8 | -10 308 .. 10 308 | 0.0d |
倍精度浮動小数点数、8バイト |
boolean |
1 | true 、false |
false |
ブール型( とtrue のみfalse ) |
char |
2 | 0 .. 65.535 | '\u0000' |
文字、2 バイト、すべて 0 より大きい |
ところで、ここで重要なニュアンスがあります。インスタンス変数 (フィールド) または静的クラス変数を宣言し、すぐに値を割り当てない場合、デフォルト値で初期化されます。表にこれらの値のリストを示します。
メソッド内のローカル変数にはデフォルト値がありません。このような変数に値を割り当てないと、それらは初期化されていないとみなされ、使用できません。
しかし、プリミティブ型に戻って詳しく見てみましょう。
2. 整数型
Java にはbyte
、 、short
、int
の4 つの整数型がありますlong
。それらは、サイズと保存できる値の範囲が異なります。
int
タイプ
最も一般的に使用されるのはint
タイプです。名前はint eger (整数) という言葉に由来しています。コード内のすべての整数リテラル (整数) は、 ( 、、またはints
で終わっていない場合) です。L
F
D
このタイプの変数は から-2,147,483,648
までの値を取ることができます+2,147,483,647
。
これは十分な量であり、ほとんどすべての場合に十分です。数値を返すほぼすべての関数は を返しますint
。
例:
コード | 説明 |
---|---|
|
このlength() メソッドは文字列の長さを返します |
|
フィールドlength には配列の長さが含まれます。 |
short
タイプ
このshort
型の名前は から得られますshort int
。これは、短整数とも呼ばれることがよくあります。型とは異なりint
、その長さはわずか 2 バイトであり、取り得る値の範囲は から まで-32,768
です+32,767
。
つまり、100 万という数字を格納することはできません。あるいは5万でも。これは、Java で最もまれに使用される整数型です。これを使用する主な動機は、メモリを節約することです。
30,000 を超えない値を扱うことになり、これらの値が何百万も存在することが事前にわかっている状況があるとします。
たとえば、10
色あたりビット数を使用する超高解像度画像を処理するアプリケーションを作成しているとします。そして、写真には 100 万個のピクセルがあります。int
これは、または を使用するかの決定が重要となるシナリオですshort
。
long
タイプ
この型の名前の由来は、長整数 (long integer)long int
とも呼ばれます。型とは異なり、値の範囲は からまでと非常に膨大です。int
-9*1018
+9*1018
なぜ基本的な整数型ではないのでしょうか?
Java が登場したのは 90 年代半ばで、当時はほとんどのコンピューターが 32 ビットでした。これは、すべてのプロセッサが 32 ビットで構成される数値を処理するように最適化されていることを意味します。プロセッサは 64 ビット整数を処理できますが、その処理は遅くなります。
その結果、プログラマはint
標準の整数型を作成し、long
本当に必要な場合にのみその型を使用することを合理的に決定しました。
byte
タイプ
これは Java で最小の整数型ですが、使用頻度が最も低いというわけではありません。その名前の はbyte
、Java でアドレス指定可能なメモリの最小ブロックを表す言葉でもあります。
この型に有効な値はそれほど多くありませんbyte
: from-128
から+127
。しかし、それがその強みではありません。このbyte
型は、大きな BLOB データをメモリに保存する必要がある場合に最もよく使用されます。この目的には、 の配列がbyte
最適です。
ファイルをどこかにコピーする必要があるとします。
ファイルの内容を処理する必要はありません。必要なのは、メモリ領域 (バッファ) を作成し、そこにファイルの内容をコピーし、そのデータをバッファから別のファイルに書き込むことだけです。これには配列byte
が必要です。
配列変数にはメモリ領域への参照のみが格納されることに注意してください。変数が何らかのメソッドに渡されるとき、メモリ アドレスのみが渡されます。メモリのブロック自体はコピーされません。
byte[] buffer = new byte[1024*1024];
FileInputStream sourceFile = new FileInputStream("c:\\data.txt");
FileOutputStream destFile = new FileOutputStream("c:\\output.txt");
while (true)
{
int size = sourceFile.read(buffer); // Read data from a file into a buffer
destFile.write(buffer, 0, size); // Write data from the buffer to a file
// Stop copying if the buffer is not full
if (size < buffer.length) break;
}
sourceFile.close();
destFile.close();
3. 実数型
プリミティブ型には、実数用の 2 つの型があります。ただし、この用語を使用するのは完全に正確ではありません。コンピュータが実数を扱うとき、それを浮動小数点数と呼びます。この名前は、数値の整数部と小数部がピリオド (カンマではなくポイント) で区切られる、数値を表す標準に由来しています。
各国には数字の書き方に関する独自の基準があります (驚き!)。
多くの人は、千の桁を区切るためにピリオドを使用し、小数点の区切り文字としてカンマを使用することに慣れています。たとえば、次one million ones and 153 thousandths
のように書きます1.000.000,153
。しかし、Java の作成者が住んでいた米国では、別の標準が採用されました。1000000.153
double
Java には、と の2 つの浮動小数点プリミティブ型がありますfloat
。
前に述べたように、これらの型は非常に特殊な内部配置を持っています。実際、これらの型の各変数の内部には 1 つの数値ではなく、2 つの数値が含まれています。
たとえば、浮動小数点数は987654.321
次のように表すことができます。次に、メモリ内では 2 つの数値(仮数、つまり数値の有効部分) と(指数、つまり 10 のべき乗)として表されます。0.987654321*106
987654321
6
float
タイプ
型の名前は浮動小数点数float
に由来します。この型のサイズは非常に小さく、わずか 4 バイト (32 ビット) ですが、 から までの値を格納できます。仮数を表すために 24 ビットが割り当てられ、指数には 8 ビットが割り当てられます。このタイプは有効数字 8 桁のみを保存できます。-3.4*1038
3.4*1038
int
このアプローチにより、同じ 4 バイトを使用しながら、よりもはるかに大きな数値を格納できるようになります。しかし、そのためには精度を犠牲にします。メモリの一部には仮数が格納されるため、これらの変数には小数点以下 6 ~ 7 桁のみが格納され、残りは破棄されます。
例:
コード | 価値 |
---|---|
|
123.45679 |
|
12346.0 |
|
-1.2345679 |
ご覧のとおり、このタイプの主な欠点は、有効桁数が非常に少なく、8 桁目になるとすぐに精度が失われることです。そのため、このfloat
型は Java プログラマーの間であまり人気がありません。
double
タイプ
型double
は標準の浮動小数点型です。名前の由来は倍精度浮動小数点数です。デフォルトでは、すべての実数リテラルはdouble
s です。
この型は 8 バイトのメモリ (64 ビット) を占有し、 からまでの値を格納できます。知っておくべき重要な点は、53 ビットが仮数に割り当てられ、残りの 11 ビットが指数に割り当てられることです。-1.7*10308
1.7*10308
これにより、15 ~ 17 の有効数字を保存できます。
例:
コード | 価値 |
---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
1234567890.1357913 |
この精度は、特にfloat
型と比較した場合に決定的であり、実数を使用するすべての演算の 99% が型を使用して実行されますdouble
。
11
-323
ビットは指数に割り当てられます。つまり、から までの 10 の累乗 (つまり、から+308
2 の累乗)を格納できます。この型は、小数点の後に数百個のゼロを含む数値を簡単に格納できます。-1024
+1023
double
コード | 価値 |
---|---|
|
600.0 |
4. インフィニティ
浮動小数点数にはもう 1 つの興味深い特徴があります。それは、無限大を示す特別な値を格納できることです。そして、正の無限大と負の無限大を表すことができます。
例:
コード | ノート |
---|---|
|
|
|
|
|
|
無限大に数値を掛けると、無限大になります。無限大に数値を足すと無限大になります。それはとても便利です。
数字ではありません ( NaN
)
無限大を伴う演算はすべて無限大を生成します。まあ、ほとんどではありますが、すべてではありません。
浮動小数点数には、別の特別な値を格納できますNaN
。N ot a N umber (not a number)の略です。
数学では、無限大を無限大で割った場合、結果は不定になります。
しかし、Java では、無限大を無限大で割ると、結果は になりますNaN
。
例:
コード | ノート |
---|---|
|
|
|
|
|
|
NaN
yieldを伴うすべての操作NaN
。
5.char
タイプ
Javaのプリミティブ型の中で、特に注意が必要なもの、それがchar
型です。その名前はchar acterという単語に由来しており、型自体は文字を格納するために使用されます。
文字というのは文字列からできているものですよね?文字列は文字の配列です。
char
しかし、さらに興味深いのは、その型が数値型でもあるという事実です。いわば兼用タイプです。
実際には、char
タイプは実際には文字ではありません。代わりに、 Unicode エンコーディングの文字コードを保存します。各文字は数字、つまり文字の数値コードに対応します。
各char
変数はメモリ内で 2 バイト (型と同じshort
) を占有します。ただしshort
、型とは異なり、char
整数型は符号なしであり、 から0
までの値を格納できます65,535
。
タイプchar
はハイブリッドタイプです。その値は、数値 (加算や乗算など) としても文字としても解釈できます。これは、文字は視覚的な表現ではありますが、コンピュータにとっては何よりも単なる数字であるためです。そして、それらを数値として扱う方がはるかに便利です。
ユニコード
Unicodeは、世界中のすべての文字を含む特別なテーブル (エンコーディング) です。そして、各文字には独自の番号が付いています。おおよそ次のようになります。
変数に値を代入するにはさまざまな方法がありますchar
。
コード | 説明 |
---|---|
|
変数a にはラテン文字が含まれますA 。 |
|
変数a にはラテン文字が含まれますA 。そのコードは です65 。 |
|
変数a にはラテン文字が含まれますA 。コードは です 65 。これは41 16 進数に相当します。 |
|
変数a にはラテン文字が含まれますA 。コードは です 65 。これは41 16 進数に相当します。2 つの追加のゼロは何も変更しません。 |
|
変数a にはラテン文字が含まれますA 。コードによって文字を定義するもう 1 つの方法。 |
ほとんどの場合、文字を引用符で囲むだけで済みます (表の最初の行のように)。とはいえ、後者の方法も人気があります。その利点は、文字列で使用できることです。
そして、先ほど述べたように、char
型も整数型であるため、次のように書くことができます。
コード | コンソール出力 |
---|---|
|
ラテン文字がB 画面に表示されます。理由: A – 65 B – 66 C –67 |
char
の操作
それぞれchar
は最初に数字 (文字コード)、次に文字です。文字コードがわかっていれば、プログラム内でその文字をいつでも取得できます。例:
コード | コンソール出力 |
---|---|
|
|
標準コード
最もよく知られている文字コードは次のとおりです。
キャラクター | コード |
---|---|
0 、、、... 1 _2 9 |
48 、、、... 49 _50 57 |
a 、、、... b _c z |
97 、、、... 98 _99 122 |
A 、、、... B _C Z |
65 、、、... 66 _67 90 |
6.boolean
タイプ
そして最後のプリミティブ型は ですboolean
。
すでにご存知のとおり、true
と の2 つの値のみを取ることができますfalse
。
これで、このタイプについて知っておくべきことはすべてわかりました。
GO TO FULL VERSION