基本データ型の概要
Javaには8つの基本データ型が存在し、これらはアプリケーション開発において最も基礎となる構成要素です。
1. 数値型データ
- int型: 32ビット符号付き整数で、範囲は-2,147,483,648から2,147,483,647までです。初期値は0です。
int value1 = 15; - byte型: 8ビット符号付き整数で、-128から127の範囲を持ちます。メモリ使用量を削減したい配列などで利用されます。初期値は0です。
byte value2 = 25; - short型: 16ビット符号付き整数で、範囲は-32,768から32,767です。int型の半分のサイズでメモリ効率が良いです。初期値は0です。
short value3 = 35; - long型: 64ビット符号付き整数で、非常に大きな数値を扱う場合に使用します。数値の末尾に"L"を付ける必要があります。初期値は0Lです。
long value4 = 45L;
2. 浮動小数点型
- float型: 単精度32ビット浮動小数点数で、精度が求められない計算に適しています。数値末尾に"F"が必要です。初期値は0.0fです。
float value5 = 60.2F; - double型: 倍精度64ビット浮動小数点数で、デフォルトの浮動小数点型です。金融計算などではBigDecimalクラスの使用が推奨されます。初期値は0.0dです。
double value6 = 3.14159265359;
3. 文字型と文字列
- char型: 16ビットUnicode文字で、'\u0000'から'\uffff'の範囲を持ちます。シングルクォートで囲みます。
char letter1 = '日'; char letter2 = '本'; char letter3 = 'B'; - String型: Javaではクラスとして実装されており、複数の文字を扱います。ダブルクォートで囲みます。
String text = "developer";
4. 論理型
- boolean型: 真偽値(trueまたはfalse)を表現します。条件判定やフラグ管理に使用されます。初期値はfalseです。
boolean flag = true;
数値表現の拡張知識
Javaでは異なる基数による数値表現が可能です:
int decimal = 15; // 10進数
int octal = 017; // 8進数 (0で始まる)
int hex = 0x1F; // 16進数 (0xで始まる)
System.out.println(decimal); // 出力: 15
System.out.println(octal); // 出力: 15
System.out.println(hex); // 出力: 31
浮動小数点数の注意点
浮動小数点数には精度の限界があるため、直接的な比較は避けるべきです:
float singlePrecision = 0.1f;
double doublePrecision = 1.0/10;
System.out.println(singlePrecision); // 0.1
System.out.println(doublePrecision); // 0.1
System.out.println(singlePrecision == doublePrecision); // false
文字型の内部表現
すべての文字は内部的に数値として処理されています:
char firstChar = 'x';
char secondChar = '日';
char unicodeChar = '\u0078'; // 'x'のUnicode
System.out.println(firstChar); // x
System.out.println((int)firstChar); // 120
System.out.println(secondChar); // 日
System.out.println((int)secondChar); // 26085
System.out.println(unicodeChar); // x
エスケープシーケンス
特殊な文字を表現するためにエスケープシーケンスを使用します:
System.out.println("Hello\tWorld"); // タブ区切り
System.out.println("Hello\nWorld"); // 改行
String obj1 = new String("example text");
String obj2 = new String("example text");
System.out.println(obj1 == obj2); // false (参照比較)
String literal1 = "example text";
String literal2 = "example text";
System.out.println(literal1 == literal2); // true (文字列プール)
型変換の仕組み
Javaでは自動変換と強制変換の2種類の型変換があります:
// 強制型変換 (大きい型→小さい型)
int largeValue = 130;
byte smallValue = (byte) largeValue; // オーバーフロー発生
System.out.println(largeValue); // 130
System.out.println(smallValue); // -126
// 自動型変換 (小さい型→大きい型)
int source = 130;
double target = source;
System.out.println(source); // 130
System.out.println(target); // 130.0
// 小数点の切り捨て
System.out.println((int)25.9); // 25
System.out.println((int)-47.3f); // -47
// 文字と数値の変換
char character = 'c';
int numeric = character + 1;
System.out.println(numeric); // 100
System.out.println((char)numeric); // d