この記事の要点
• 変数は型名 変数名 = 値;の順で宣言
• プリミティブ型は8種類(int, double, boolean など)
• Java 10 以降は var で型推論が可能
このシリーズについて
「Java入門」シリーズ第3回。Hello World を動かしたので、次はデータを扱う基本を学びます。
前提条件: Java入門 #2 - 最初のプログラム(Hello World) が完了し、
System.out.printlnで文字列を出力できる。
変数とは
変数はデータを一時的に保存する箱です。以下のようなイメージで考えてください。
| 概念 | 現実の例 | Javaでの例 |
|---|---|---|
| 変数 | ラベル付きの箱 | age(年齢を入れる箱) |
| 値 | 箱に入れる中身 | 25 |
| 型 | 箱のサイズ・種類 | int(整数型) |
Javaは静的型付け言語なので、変数を作るときに「この箱には何を入れるか」を事前に宣言します。
変数宣言の基本構文
型名 変数名 = 値;
具体例:
// Java 21 で動作確認済み
int age = 25; // 整数
double price = 1980.5; // 小数
String name = "太郎"; // 文字列
boolean isActive = true; // 真偽値
ポイント: 変数名はキャメルケース(先頭小文字、以降の単語は大文字開始)が慣例です。`userName`、`maxCount` のように書きます。
プリミティブ型(基本型)
Javaには8つのプリミティブ型があります。数値、文字、真偽値を表現します。
| 型名 | 分類 | サイズ(ビット) | 範囲 / 内容 | デフォルト値 |
|---|---|---|---|---|
byte | 整数 | 8 | -128 ~ 127 | 0 |
short | 整数 | 16 | -32,768 ~ 32,767 | 0 |
int | 整数 | 32 | 約 -21億 ~ 21億 | 0 |
long | 整数 | 64 | 約 -922京 ~ 922京 | 0L |
float | 小数 | 32 | 単精度浮動小数点 | 0.0f |
double | 小数 | 64 | 倍精度浮動小数点 | 0.0d |
char | 文字 | 16 | 1文字(Unicodeコードポイント) | '�' |
boolean | 真偽値 | — | true または false | false |
使い分けの目安
| 用途 | 推奨型 | 理由 |
|---|---|---|
| 普通の整数 | int | 最も頻繁に使う。範囲も十分 |
| とても大きい整数 | long | タイムスタンプ、IDなど |
| 小数 | double | float より精度が高い |
| 真偽値 | boolean | フラグ、条件判定 |
| 1文字 | char | あまり使わない |
| メモリ節約 | byte, short | 配列を大量に扱う場合のみ |
TIPS: 迷ったらint と doubleだけ覚えてください。この2つで大半のケースをカバーできます。
変数宣言の実例
// Java 21 で動作確認済み
public class VariableExample {
public static void main(String[] args) {
// 整数
int count = 10;
long population = 125000000L; // Lサフィックスを付ける
// 小数
double temperature = 36.5;
float ratio = 0.75f; // fサフィックスを付ける
// 文字
char grade = 'A'; // シングルクォートで囲む
// 真偽値
boolean isPassed = true;
// 出力
System.out.println("Count: " + count);
System.out.println("Temperature: " + temperature);
System.out.println("Grade: " + grade);
System.out.println("Passed: " + isPassed);
}
}
注意: `long` 型のリテラルには L、`float` 型には f を末尾に付けます。付けないと型エラーになります。
参照型(軽く知る)
プリミティブ型以外は参照型です。代表例は String(文字列)です。
String message = "Hello";
| プリミティブ型 | 参照型 |
|---|---|
| 値そのものを保持 | 値の「場所」を保持 |
小文字で始まる(int, double) | 大文字で始まる(String, Integer) |
null を代入できない | null を代入できる |
参照型の詳細は「クラスとオブジェクト」の回で学ぶので、今は「String は特別な型」と覚えておけばOKです。
var キーワード(型推論)
Java 10 以降、var を使うと型名を省略できます。右辺から型を推論してくれます。
var age = 25; // int と推論される
var price = 1980.5; // double と推論される
var name = "太郎"; // String と推論される
var isActive = true; // boolean と推論される
| メリット | デメリット |
|---|---|
| タイプ量が減る | 初見で型が分かりにくい |
| リファクタリングが楽 | 推論結果が直感と違うことがある |
ポイント: 学習段階では明示的に型を書く方がおすすめです。型を意識することで理解が深まります。慣れたら `var` を使いましょう。
リテラル(値の書き方)
リテラルはコード中に直接書く値のことです。
| 型 | リテラルの例 | 補足 |
|---|---|---|
int | 10, -5, 0 | 普通に書く |
long | 1000L, -999L | 末尾に L |
double | 3.14, -0.5 | 小数点を含む |
float | 3.14f, 0.5f | 末尾に f |
boolean | true, false | 小文字で書く |
char | 'A', 'あ', '\n' | シングルクォート |
String | "Hello", "こんにちは" | ダブルクォート |
数値リテラルの読みやすい書き方(Java 7以降)
大きな数字はアンダースコア _ で区切れます。
int million = 1_000_000; // 1,000,000
long gdp = 550_000_000_000L; // 5500億
変数の初期化と再代入
// 宣言と初期化を同時に
int x = 10;
// 宣言だけ(初期化は後で)
int y;
y = 20; // 初期化
// 再代入
x = 30; // 型名は書かない
注意: 初期化していない変数をそのまま使うとコンパイルエラーになります。必ず値を入れてから使いましょう。
型変換(キャスト)
小さい型から大きい型への変換は自動で行われます(暗黙的キャスト)。
int a = 10;
long b = a; // int → long は自動OK
逆に大きい型から小さい型への変換は明示的にキャストが必要です。
long x = 100L;
int y = (int) x; // 明示的にキャスト
| 変換方向 | 方法 | 注意点 |
|---|---|---|
| 小 → 大 | 自動 | データ損失なし |
| 大 → 小 | 明示的キャスト | 値が範囲外なら切り捨て |
| 小数 → 整数 | 明示的キャスト | 小数部分が切り捨て |
定数(final)
値を変更したくない場合は final を付けます。
final int MAX_COUNT = 100;
// MAX_COUNT = 200; // コンパイルエラー
慣例として、定数名はすべて大文字 + アンダースコアで書きます(MAX_VALUE, DEFAULT_SIZE など)。
よくある間違い
| 間違い | 理由 | 正しい書き方 |
|---|---|---|
int x; → System.out.println(x); | 初期化していない | int x = 0; |
String name = 'Taro'; | シングルクォートは char 用 | String name = "Taro"; |
int y = 3.14; | double を int に入れている | double y = 3.14; |
long z = 1000000000000; | L が付いていない | long z = 1000000000000L; |
チェックリスト
次に進む前に、以下を確認してください。
- 変数宣言の構文
型名 変数名 = 値;を理解した - プリミティブ型8種のうち、
int,double,booleanを使えるようになった -
Stringは参照型であることを知った -
varで型推論ができることを知った(使うのは慣れてから)
次のステップ
Java入門 #4 - 演算子(算術・比較・論理) で、変数を使った計算や条件判定の方法を学びます。
参考リソース
- Oracle Java Tutorials - Primitive Data Types — 公式チュートリアル
- Java Language Specification - Types — 言語仕様(詳細版)
- Local Variable Type Inference (var) — Java 10 で導入された型推論機能
- IntelliJ IDEA - 変数の型を確認する