java とpythonで型の有無がよくわかる具体的なスペニット

Javaの静的型付けとPythonの動的型付けの違いを示すスニペットを次に示します。

Java(静的型付け言語)の場合

// 型を明示的に宣言する
int num = 10;  
String text = "Hello";
boolean flag = true;

// 異なる型への代入はコンパイルエラー
// num = "World"; // コンパイルエラー

// メソッドの引数や戻り値も型を指定
int add(int a, int b) {
    return a + b;
}

// ジェネリクスで型パラメータを使用
List<String> strList = new ArrayList<>();
strList.add("Java");
strList.add(100); // コンパイルエラー

Python(動的型付け言語)の場合

# 型宣言なし
num = 10
text = "Hello"  
flag = True

# 型が動的に変化する
num = "World"  # 整数から文字列に変更

# 関数の型注釈はオプション
def add(a: int, b: int) -> int:
    return a + b

# リストは型つきでない
str_list = []
str_list.append("Python")
str_list.append(100)  # 整数も追加可能

Javaの場合、変数やメソッドの型を明示的に宣言する必要があり、異なる型への代入はコンパイルエラーとなります。一方Pythonでは、型宣言は不要で、変数に値を代入するだけで型が決定され、別の型の値を代入しても型がその都度変化します。

Pythonではオプションで型注釈を記述できますが、これは静的解析ツールなどで利用されるだけで、実行時の動作には影響しません。

また、Javaではジェネリクスを使ってコレクションの要素型を指定しますが、Pythonのリストは型つきではありません。

このようにJavaは静的型チェックにより型の安全性が高くなる一方で、Pythonは型に拘束されないため柔軟性が高くなっています。用途に応じてトレードオフを考慮し使い分ける必要があります。

この記事が気に入ったらサポートをしてみませんか?