変数とデータ型

変数はデータを格納するコンテナです。このレッスンでは、Javaの変数とデータ型を学びます。

変数とは

変数はメモリ内のデータを保持するストレージ位置です。

変数の3要素

要素 説明
どのような種類のデータを格納するか intdoubleString
名前 この変数を見つける方法 agepricename
変数に格納されたデータ 259.99"Alice"

変数の宣言

JAVA
// 先に宣言してから代入
int age;
age = 25;

// 宣言と代入を同時に行う
int age = 25;

// 同じ型の複数の変数を宣言
int x = 1, y = 2, z = 3;

命名規則

構文規則(必須)

規則 正しい 誤り
文字、数字、アンダースコア、$のみ使用可能 myVar my-var
数字で始めることはできない name1 1name
Javaのキーワードは使用できない myClass class
大文字小文字を区別 ageAge

命名規約(推奨)

規約 説明
camelCase myVariableName 変数とメソッド
意味のある名前 studentAge abtempは避ける
定数は大文字 MAX_VALUE アンダースコアで区切る

プリミティブデータ型

Javaには8つのプリミティブデータ型があります。

整数型

サイズ 範囲
byte 1バイト -128〜127 byte b = 100;
short 2バイト -32768〜32767 short s = 1000;
int 4バイト -21億〜21億 int i = 100000;
long 8バイト より大きな範囲 long l = 100L;
💡 デフォルトではintを使用します。より大きな範囲が必要な場合はlong(Lサフィックス付き)を使用してください。

浮動小数点型

サイズ 精度
float 4バイト 6〜7桁 float f = 3.14f;
double 8バイト 15桁 double d = 3.14;
💡 デフォルトではdoubleを使用します。floatが必要な場合はfサフィックスを追加してください。

文字型

JAVA
char c1 = 'A';      // 単一引用符で囲んだ単一文字
char c2 = 'B';      // 任意の文字を格納可能
char c3 = 65;       // ASCIIコード値も使用可能

ブール型

JAVA
boolean isTrue = true;
boolean isFalse = false;
💡 注意: Javaでは、ブール値はtrueまたはfalseのみです。0や1で表すことはできません。

参照データ型

8つのプリミティブ型以外はすべて参照型です。

一般的な参照型

JAVA
String name = "Alice";        // 文字列
int[] arr = {1, 2, 3};       // 配列
Object obj = new Object();    // オブジェクト

String

JAVA
// 文字列は二重引用符を使用
String greeting = "Hello, World!";

// 文字列の連結
String fullName = "John" + " " + "Doe";

// 文字列の長さ
int len = greeting.length();  // 13

型変換

自動型変換(小→大)

JAVA
int i = 100;
long l = i;      // intからlongに自動変換
double d = i;    // intからdoubleに自動変換

明示的型キャスト(大→小)

JAVA
double d = 3.14;
int i = (int) d;  // 明示的キャスト、結果は3(小数点以下切り捨て)

long l = 100;
int i = (int) l;  // 明示的キャスト
⚠️ 注意: 明示的キャストは精度の喪失やオーバーフローを引き起こす可能性があります。注意して使用してください。

例:型変換

JAVA
public class TypeConversion {
    public static void main(String[] args) {
        // 自動型変換
        int a = 100;
        long b = a;
        double c = a;
        System.out.println("int: " + a);      // 100
        System.out.println("long: " + b);      // 100
        System.out.println("double: " + c);    // 100.0
        
        // 明示的型キャスト
        double d = 3.99;
        int e = (int) d;
        System.out.println("double: " + d);    // 3.99
        System.out.println("int: " + e);       // 3(切り捨て、四捨五入ではない)
    }
}
▶ 試してみよう

final定数

finalキーワードを使用して定数を定義します。一度代入すると、その値を変更することはできません。

JAVA
final double PI = 3.14159;
final String APP_NAME = "MyApp";
final int MAX_SIZE = 100;

// PI = 3.14;  // エラー!定数は変更できません
💡 命名規約: 定数名はすべて大文字で、アンダースコアで区切ります。

varローカル変数型推論

Java 10では、ローカル変数の自動型推論を可能にするvarキーワードが導入されました。

JAVA
// 従来の方法
String name = "Alice";
ArrayList<String> list = new ArrayList<String>();

// varを使用
var name = "Alice";           // Stringとして自動推論
var list = new ArrayList<String>();  // ArrayList<String>として自動推論
⚠️ 注意: varはローカル変数にのみ使用でき、クラスメンバ変数やメソッドパラメータには使用できません。

❓ よくある質問

Q intとIntegerの違いは何ですか?
A intはプリミティブ型、Integerはラッパークラス(参照型)です。Integerはnullにできますが、intはできません。
Q floatとdoubleのどちらを選ぶべきですか?
A 通常、より高い精度のdoubleを使用します。メモリを節約するか、大量の浮動小数点データを処理する必要がある場合のみfloatを使用してください。
Q Stringはプリミティブ型ですか?
A いいえ。Stringは参照型ですが、Javaは特別なサポートを提供しており、文字列リテラルで直接代入できます。

📖 まとめ

📝 演習

  1. 変数練習: 名前、年齢、身長、体重を格納する変数を定義し、出力する
  2. 型変換: double値3.14をintに変換し、結果を観察;int値100をdoubleに変換し、結果を観察
  3. 定数練習: 円周率の定数PIを定義し、半径5の円の面積を計算

次のレッスン

次のレッスンでは、演算子を学びます — Javaの various 演算を理解します。

100%