Javaにはあるけれど、Pythonには存在しない文法

こんにちは、ゆうせいです。

「Javaにはあるけれど、Pythonには存在しない文法」には、意外とたくさんあります。
今回は、JavaとPythonの文法を比べながら、Pythonには存在しないけれどJavaには備わっている代表的な文法や構文を紹介していきます!


JavaにはあってPythonにはない主な文法一覧

機能・文法JavaPython説明
do whileありなし必ず一度実行されるループ構文
三項演算子(? :あり書き方が異なる条件によって値を切り替える短縮構文
switchあり3.10以降にmatch構文が追加条件分岐を簡潔に書ける文法
プリミティブ型(int, booleanなど)ありなし(すべてオブジェクト)メモリ効率と速度重視の基本型
interfaceキーワードありなし(代替として抽象基底クラスやプロトコル)実装の契約を定義
アクセス修飾子(public, private, protectedありなし(慣習で ___ を使用)カプセル化の明示
静的型付け(明示的な型宣言)必須任意(動的型付け)変数の型を明示する必要がある
finalキーワードありなし(代わりに @property やイミュータブル型を使う)変更不可の宣言
ラベル付きbreak / continueありなし多重ループからの脱出制御

それぞれ詳しく解説してみましょう!


1. do while 文(Pythonには無し)

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 5);

Pythonではこのような構文はありません。代わりに while Truebreak を使って同じ処理を実現します。


2. 三項演算子(? :

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

Pythonでは、同様の処理を次のように書きます:

x = a if a > b else b

文法は違うけれど意味は同じです。


3. switch 文(Pythonでは 3.10 から match

switch (x) {
    case 1:
        System.out.println("One");
        break;
    case 2:
        System.out.println("Two");
        break;
    default:
        System.out.println("Other");
}

Python 3.10 以降は match 文がありますが、まだ互換性や使い勝手は限定的です。

match x:
    case 1:
        print("One")
    case 2:
        print("Two")
    case _:
        print("Other")


4. プリミティブ型(基本データ型)

Javaには int, double, boolean などのプリミティブ型があり、メモリ効率が高いです。

Pythonにはすべてオブジェクト型しかありません。たとえば int も実はクラスです。


5. アクセス修飾子

Javaはクラスやメソッド、変数のアクセス範囲を public, private, protected などで明示的に指定できます。

private int secret;
public void show() { ... }

Pythonには文法的にはありませんが、慣習として次のように書きます:

class Sample:
    def __init__(self):
        self._protected = 1      # _で始まる → 内部用
        self.__private = 2       # __で始まる → 名前修飾される


6. final キーワード

final int x = 10;  // xは以降変更不可

Pythonには final という文法はありませんが、変更不可のオブジェクト(タプルなど)や、型ヒントを使って「意図」を示すことはできます。


7. interface(インターフェース)

Javaでは「これを実装しなさい」という契約(プロトコル)として interface を定義できます。

interface Animal {
    void speak();
}

Pythonではこのような機能は abc モジュールや Protocol(PEP 544)で代用します。


8. ラベル付きbreak / continue

outer:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i + j > 5) {
            break outer;
        }
    }
}

Pythonにはラベルが存在しないため、フラグを使うか、ループを関数で包んで return で抜ける必要があります。


まとめ

Javaには、静的型付け言語としての厳格な構文や、パフォーマンスを意識した機能が豊富にあります。一方Pythonは柔軟でシンプルな文法を重視する動的型付け言語です。

どちらが優れているというよりは、「目的に応じた言語選び」が大切ですね。


今後の学習の指針

  • JavaとPythonの構文の比較学習をしてみる(for文、クラス定義、例外処理など)
  • PythonでもJava風の書き方を再現する方法(抽象クラス、型ヒント)
  • 逆に、「Pythonにしかない文法」を知ってみる(リスト内包表記、with文など)

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。