10日で覚えるJavaDay 2: 変数とデータ型

Day 2: 変数とデータ型

今日学ぶこと

  • 変数の宣言と初期化
  • プリミティブ型(8種類)
  • 参照型の基礎
  • 型変換(キャスト)
  • 演算子

変数

変数は値を格納する箱です。Javaは静的型付け言語なので、変数を使う前に型を宣言する必要があります。

// 型 変数名 = 値;
int age = 25;
String name = "太郎";
double price = 1980.5;
boolean isActive = true;

変数の命名規則

// ✅ OK
int myAge = 25;
String firstName = "太郎";
final int MAX_SIZE = 100;

// ❌ NG
int 1stNumber = 10;    // 数字で始まる
int my-age = 25;       // ハイフン不可
int class = 1;         // 予約語
規則 説明
キャメルケース myVariableName 変数名・メソッド名
パスカルケース MyClassName クラス名
アッパースネーク MAX_VALUE 定数

プリミティブ型

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

flowchart TB
    subgraph Primitive["プリミティブ型"]
        subgraph Integer["整数型"]
            Byte["byte<br>8bit"]
            Short["short<br>16bit"]
            Int["int<br>32bit"]
            Long["long<br>64bit"]
        end
        subgraph Float["浮動小数点型"]
            FloatT["float<br>32bit"]
            Double["double<br>64bit"]
        end
        Char["char<br>16bit"]
        Bool["boolean<br>true/false"]
    end
    style Int fill:#3b82f6,color:#fff
    style Double fill:#22c55e,color:#fff
    style Char fill:#f59e0b,color:#fff
    style Bool fill:#8b5cf6,color:#fff

整数型

byte  b = 127;                  // -128 〜 127
short s = 32767;                // -32,768 〜 32,767
int   i = 2147483647;           // -2^31 〜 2^31-1(約21億)
long  l = 9223372036854775807L; // -2^63 〜 2^63-1
サイズ 範囲 用途
byte 1バイト -128〜127 バイナリデータ
short 2バイト -32,768〜32,767 あまり使わない
int 4バイト 約±21億 最も一般的
long 8バイト 約±922京 大きな数値

推奨: 整数には基本的に**int**を使いましょう。longは末尾にLを付けます。

浮動小数点型

float  f = 3.14f;    // 末尾に f が必要
double d = 3.14159;  // デフォルト
サイズ 精度 用途
float 4バイト 約7桁 あまり使わない
double 8バイト 約15桁 最も一般的

推奨: 小数には基本的に**double**を使いましょう。

文字型と論理型

char   c = 'A';       // シングルクォート
char   jp = 'あ';     // Unicode文字
boolean flag = true;   // true または false

参照型の基礎

プリミティブ型以外はすべて参照型です。代表例はStringです。

String greeting = "こんにちは";
String name = new String("太郎");

// Stringは特別:+で連結できる
String message = greeting + "、" + name + "さん!";
System.out.println(message); // こんにちは、太郎さん!

プリミティブ型と参照型の違い

flowchart LR
    subgraph Prim["プリミティブ型"]
        Var1["age = 25"]
        Stack1["スタック: 25"]
    end
    subgraph Ref["参照型"]
        Var2["name"]
        Stack2["スタック: 参照"]
        Heap["ヒープ: \"太郎\""]
    end
    Var1 --> Stack1
    Var2 --> Stack2 --> Heap
    style Prim fill:#3b82f6,color:#fff
    style Ref fill:#22c55e,color:#fff
特徴 プリミティブ型 参照型
格納される値 値そのもの メモリアドレス(参照)
デフォルト値 0, false null
int, boolean String, 配列

var(ローカル変数の型推論)

Java 10以降、varで型推論が使えます。

var count = 10;           // int と推論
var name = "太郎";        // String と推論
var price = 19.99;        // double と推論
var items = new ArrayList<String>(); // ArrayList<String> と推論

注意: varはローカル変数のみで使用可能です。フィールドやメソッドの引数には使えません。


定数(final)

final int MAX_SIZE = 100;
final double TAX_RATE = 0.10;
final String APP_NAME = "MyApp";

// MAX_SIZE = 200; // ❌ コンパイルエラー

慣習: 定数はアッパースネークケースMAX_SIZE)で命名します。


型変換(キャスト)

暗黙的変換(拡大変換)

小さい型→大きい型は自動的に変換されます。

int i = 100;
long l = i;      // int → long(自動)
double d = i;    // int → double(自動)

明示的変換(縮小変換)

大きい型→小さい型はキャストが必要です。

double d = 3.99;
int i = (int) d;     // 3(小数点以下切り捨て)

long l = 100L;
int j = (int) l;     // 100
flowchart LR
    Byte["byte"] --> Short["short"] --> Int["int"] --> Long["long"] --> Float["float"] --> Double["double"]
    style Int fill:#3b82f6,color:#fff
    style Double fill:#22c55e,color:#fff

注意: 縮小変換ではデータが失われる可能性があります。


演算子

算術演算子

int a = 10, b = 3;

System.out.println(a + b);   // 13(加算)
System.out.println(a - b);   // 7(減算)
System.out.println(a * b);   // 30(乗算)
System.out.println(a / b);   // 3(整数除算)
System.out.println(a % b);   // 1(剰余)

注意: 整数同士の除算は小数点以下が切り捨てられます。10 / 33 です。

代入演算子

int x = 10;
x += 5;   // x = x + 5 → 15
x -= 3;   // x = x - 3 → 12
x *= 2;   // x = x * 2 → 24
x /= 4;   // x = x / 4 → 6
x %= 4;   // x = x % 4 → 2

インクリメント・デクリメント

int count = 0;
count++;    // 1(後置)
++count;    // 2(前置)
count--;    // 1(後置)
--count;    // 0(前置)

比較演算子

int a = 10, b = 20;

a == b   // false(等しい)
a != b   // true(等しくない)
a > b    // false(より大きい)
a < b    // true(より小さい)
a >= b   // false(以上)
a <= b   // true(以下)

論理演算子

boolean x = true, y = false;

x && y   // false(AND)
x || y   // true(OR)
!x       // false(NOT)

文字列操作の基礎

String s = "Hello, Java!";

s.length()              // 12(文字数)
s.charAt(0)             // 'H'(0番目の文字)
s.toUpperCase()         // "HELLO, JAVA!"
s.toLowerCase()         // "hello, java!"
s.contains("Java")      // true
s.startsWith("Hello")   // true
s.substring(0, 5)       // "Hello"
s.replace("Java", "World") // "Hello, World!"
s.trim()                // 前後の空白を除去
s.isEmpty()             // false

重要: Stringは**不変(immutable)**です。メソッドを呼んでも元の文字列は変わりません。


実践: BMI計算プログラム

public class BmiCalculator {
    public static void main(String[] args) {
        double height = 1.70;  // メートル
        double weight = 65.0;  // キログラム

        double bmi = weight / (height * height);

        System.out.println("=== BMI計算 ===");
        System.out.printf("身長: %.2f m%n", height);
        System.out.printf("体重: %.1f kg%n", weight);
        System.out.printf("BMI: %.1f%n", bmi);

        // 判定
        String category;
        if (bmi < 18.5) {
            category = "低体重";
        } else if (bmi < 25.0) {
            category = "普通体重";
        } else if (bmi < 30.0) {
            category = "肥満(1度)";
        } else {
            category = "肥満(2度以上)";
        }
        System.out.printf("判定: %s%n", category);
    }
}

まとめ

概念 説明
変数 型を宣言して値を格納
プリミティブ型 int, double, boolean, char 等8種類
参照型 Stringなど、オブジェクトを参照
var ローカル変数の型推論(Java 10+)
final 定数(再代入不可)
キャスト (int) 3.14 で型変換
演算子 算術、比較、論理、代入

重要ポイント

  1. 整数は**int、小数はdouble**を基本にする
  2. String参照型不変
  3. 整数同士の除算は小数点以下が切り捨て
  4. 型変換は拡大変換は自動、縮小変換はキャスト必要

練習問題

問題1: 基本

円の半径(double)を変数に代入し、面積と周長を計算して表示するプログラムを作成してください。

問題2: 応用

華氏温度を摂氏温度に変換するプログラムを作成してください(摂氏 = (華氏 - 32) × 5 / 9)。

チャレンジ問題

秒数(int)を「X時間Y分Z秒」の形式で表示するプログラムを作成してください(例:3661秒 → 1時間1分1秒)。


参考リンク


次回予告: Day 3では「制御構文」について学びます。if文、switch文、ループをマスターしましょう。