Javaにおける変数と演算子の基礎

キーワードの分類と用途

Javaのキーワードは言語仕様によって予約された単語であり、特定の意味を持つため、識別子として使用することはできません。すべて小文字で構成されます。

  • データ型定義: int, double, char, boolean, class, interface, enum
  • 制御フロー: if, for, while, switch, return, break
  • アクセス修飾子: public, protected, private
  • クラス・メソッド修飾子: static, final, abstract, synchronized
  • 継承と実装: extends, implements
  • オブジェクト操作: new, this, super, instanceof
  • 例外処理: try, catch, finally, throw, throws
  • パッケージ管理: package, import
  • その他の修飾子: volatile, transient, native, assert
  • リテラル値: true, false, null

識別子の命名規則と慣例

変数名、メソッド名、クラス名などに使用する識別子には厳密なルールと推奨される命名スタイルがあります。

必須ルール(構文要件)

  1. 英字(大文字・小文字)、数字、アンダースコア(_)、ドル記号($)のみ使用可能
  2. 先頭を数字にすることはできない
  3. キーワードや将来の予約語は使用不可
  4. 空白や特殊文字(スペース、タブなど)を含めない
  5. 大文字と小文字が区別される

命名慣例(ベストプラクティス)

  • パッケージ名: 全て小文字(例: com_example_app
  • クラス・インタフェース: パスカルケース(例: StudentRecord
  • 変数・メソッド: キャメルケース(例: studentName, calculateTotal()
  • 定数: アンダースコア付き大文字(例: MAX_VALUE, DEFAULT_TIMEOUT

変数の基本概念

変数はメモリ上の一時的な格納領域であり、値を保持してプログラム中で再利用できるようにします。

構成要素

  • データ型: 格納可能な値の種類(例: int, String
  • 変数名: 識別子として使用(命名規則に従う)
  • 値: 実際に格納されるデータ

宣言形式

データ型 変数名 = 初期値;

例: int age = 25;

スコープの原則

  • 変数は宣言されたブロック内でのみ有効
  • 同一スコープ内で同じ名前の変数を複数宣言できない
  • ブロックを抜けると自動的に破棄される

基本データ型の詳細

整数型

サイズ範囲
byte1バイト-128 〜 127
short2バイト-32,768 〜 32,767
int4バイト-2^31 〜 2^31-1
long8バイト-2^63 〜 2^63-1(末尾にLを付ける)

整数リテラルのデフォルト型は int です。大きな値には long を使用します。

浮動小数点型

サイズ精度
float4バイト単精度(末尾にFまたはf)
double8バイト倍精度(デフォルト)

浮動小数点数は二進法による近似表現のため、正確な計算が必要な場合は BigDecimal クラスを使用すべきです。

文字型 char

  • 2バイトでUnicode文字を表現
  • 単一引用符で囲む(例: 'A', 'あ'
  • エスケープシーケンスも使用可能:
    \n(改行)、\t(タブ)、\"(二重引用符)、\\(バックスラッシュ)
  • 内部的には数値として扱われ、算術演算も可能

真偽型 boolean

  • 条件判定に使用される唯一の型
  • 取り得る値は truefalse のみ
  • 0や非0値で代替できない(C言語とは異なる点)

型変換のルール

自動型変換(昇格)

小さい範囲の型から大きい範囲の型へは自動的に変換されます。

byte → short → int → long → float → double

例外: byte, short, char 同士の演算結果は常に int になります。

強制型変換(キャスト)

大きな型から小さな型へ変換する場合、明示的なキャストが必要です。

int num = 100;
byte b = (byte) num; // 明示的なキャスト

このとき、値が範囲外の場合には情報の損失が発生する可能性があります。

文字列との連結

String 型は参照型ですが、+ 演算子を使って基本データ型と連結できます。

String message = "年齢: " + 30; // 結果は "年齢: 30"

この演算では、右辺の値が自動的に文字列に変換されます。

進数とビット表現

  • 十進数: 通常の数値(例: 123)
  • 二進数: 0b または 0B 接頭辞(例: 0b1010
  • 八進数: 0 接頭辞(例: 017
  • 十六進数: 0x または 0X 接頭辞(例: 0xFF

負数は「2の補数」形式で表現され、最上位ビットが符号を表します。

主な演算子の種類

算術演算子

  • + - * / %: 四則演算と剰余
  • ++, --: 前置・後置インクリメント/デクリメント
  • +: 文字列連結にも使用

代入演算子

  • =: 単純代入
  • +=, -= など: 複合代入(左辺の型は変更されない)

比較演算子

  • ==, !=, <, >, <=, >=
  • 戻り値は常に boolean
  • instanceof: オブジェクトの型チェック

論理演算子

  • &&(短絡AND): 左がfalseなら右を評価しない
  • ||(短絡OR): 左がtrueなら右を評価しない
  • !: 否定
  • &, |: 条件式に関わらず両方を評価

ビット演算子

  • <<: 左シフト(2倍の効果)
  • >>: 右シフト(符号維持)
  • >>>: 論理右シフト(ゼロ埋め)
  • &, |, ^, ~: ビット単位のAND/OR/XOR/NOT

三項演算子

条件に基づいて値を選択します。

int max = (a > b) ? a : b;

これは if-else 文の簡略形ですが、式として扱えるため変数への代入に便利です。

優先順位と可読性

演算子には厳密な優先順位がありますが、複雑な式では括弧 () を使って明示的に順序を指定することが推奨されます。

int result = ((a + b) * c) >> 1; // 可読性向上のため括弧を使用

過度に複雑な1行式は避けて、複数ステップに分けて記述することで保守性を高めましょう。

タグ: Java 変数 データ型 演算子 型変換

5月19日 08:31 投稿