コンテンツにスキップ

Javaの基礎; Language Basics

変数; Variables

変数の種類

Javaの変数は次の種類があります:

  • インスタンス変数; Instance Variables (Non-Static Fields)
  • クラス変数; Class Variables (Static Fields)
  • ローカル変数; Local Variables
  • パラメータ; Parameters
種類 宣言場所 キーワード 特徴
インスタンス変数 クラス内 (なし) 各オブジェクトごとに存在する
クラス変数 クラス内 static クラス全体で1つだけ共有する
ローカル変数 メソッド内 (なし) メソッド内だけで有効
パラメータ メソッドの引数 (なし) 呼び出し元から値を受け取る

🔸 1. インスタンス変数(Instance Variables)

  • クラスの中で static をつけずに宣言した変数
  • 各オブジェクト(インスタンス)が自分専用に持つ
  • オブジェクトごとに値が異なる

🧠 例:自転車オブジェクトごとに異なるスピード

public class Bicycle {
    int currentSpeed;  // ← インスタンス変数
}

🔸 2. クラス変数(Class Variables)

  • static をつけて宣言する変数
  • クラス全体で1つだけ存在する(すべてのインスタンスで共通)
  • 通常、クラス名からアクセスされる

🧠 例:全自転車で共通のギアの数

public class Bicycle {
    static int numGears = 6;  // ← クラス変数
}

🔸 3. ローカル変数(Local Variables)

  • メソッドの中で宣言する変数
  • そのメソッドの中でだけ使える(外からアクセスできない)
  • 自動的に初期化されないため、使う前に必ず代入が必要

🧠 例:一時的に使うカウント

public void ride() {
    int count = 0;  // ← ローカル変数
    count++;
}

🔸 4. パラメータ(Parameters)

  • メソッドやコンストラクタの引数として渡される変数
  • メソッド内でのみ使えるが、呼び出し元から値が渡される
  • フィールドではなく、一時的な入力用変数

🧠 例:main メソッドの args や、クラスの引数

public void setSpeed(int speed) {  // speed ← パラメータ
    this.currentSpeed = speed;
}

プリミティブ型; Primitive Data Types

ビット数 主な用途・特徴
byte 8 -128〜127。メモリ節約に有効。制限ある範囲で意味を明示できる。
short 16 -32,768〜32,767。byteと同様、メモリ節約向け。
int 32 -2³¹〜2³¹-1。最も一般的な整数型。Java SE 8以降は符号なしとしても利用可。
long 64 -2⁶³〜2⁶³-1。大きな範囲の整数に使用。符号なしの扱いも可能(Java SE 8以降)。
float 32 単精度浮動小数点数。メモリ節約向け。通貨などの精密計算には不向き。
double 64 倍精度浮動小数点数。一般的な小数表現に使用。floatより精度が高い。
boolean 不定 true / false の2値。フラグ処理に使う。サイズは厳密には未定義。
char 16 Unicode文字1つ。'\u0000'〜'\uffff'(0〜65,535)。

プリミティブ型のビット数の違いとは、そのデータ型が扱える情報量(数値の範囲や精度)やメモリ使用量に直結する、非常に重要な違いです。

🔹ビット数とは?

1ビットは「0」または「1」の 2通りの状態 を表す最小単位です。つまり、Nビットの型は、

  • 符号なしなら「2ⁿ通り」
  • 符号ありなら「-2ⁿ⁻¹〜2ⁿ⁻¹ - 1」

の数値を表現できます。

🔸ビット数の違いによる影響

ビット数 メモリ使用量 表せる値の範囲または精度 主な用途
byte 8ビット 非常に小さい -128 ~ 127 メモリ節約、バイト単位の処理
short 16ビット 小さい -32,768 ~ 32,767 byteより広いが軽量な数値処理
int 32ビット 標準的 -2,147,483,648 ~ 2,147,483,647 一般的な整数処理
long 64ビット 多い -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 大きな数値の処理
float 32ビット 標準的 小数点以下約7桁の精度 軽量な浮動小数点
double 64ビット 多い 小数点以下約15桁の精度 精度が必要な浮動小数点
char 16ビット 小さい '\u0000' ~ '\uffff'(Unicode) 1文字(Unicode)
boolean 不定 実装依存 true または false 真偽値フラグ

🔹例で比較(int vs long)

int population = 130000000; // OK: 約1.3億人
long worldPopulation = 8000000000L; // OK: 約80億人(intではオーバーフロー)

✅ まとめ

  • ビット数が大きいほど → より大きな値 or 高精度な小数が扱える(そのぶんメモリも多く使う)
  • ビット数が小さいほど → メモリ節約になる(ただし扱える値の範囲に注意)

用途に応じて適切な型を選ぶのが、パフォーマンスや安全性のカギです。


参考

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html