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は型に拘束されないため柔軟性が高くなっています。用途に応じてトレードオフを考慮し使い分ける必要があります。
この記事が気に入ったらサポートをしてみませんか?