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