Javaにはあるけれど、Pythonには存在しない文法
こんにちは、ゆうせいです。
「Javaにはあるけれど、Pythonには存在しない文法」には、意外とたくさんあります。
今回は、JavaとPythonの文法を比べながら、Pythonには存在しないけれどJavaには備わっている代表的な文法や構文を紹介していきます!
JavaにはあってPythonにはない主な文法一覧
機能・文法 | Java | Python | 説明 |
---|---|---|---|
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 True
と break
を使って同じ処理を実現します。
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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。