目次
静的型付けと動的型付けの違いのまとめ
型の決定 | 対象 | 代表的な言語 | |
---|---|---|---|
静的型付け | コンパイル時 実行前に型エラー検出するので安全性は高い |
大規模開発向け 型宣言が必要 |
Java, C#, TypeScript, Rust |
動的型付け | 実行時 実行中に型エラーが発生するので安全性は低い |
素早いプロトタイピング向け 型を気にせず書ける |
Python, JavaScript, Ruby, PHP |
静的型付け = 安全性・信頼性重視、大規模開発に向く
動的型付け = 柔軟性・開発スピード重視、小規模・スクリプトに向く
静的型付け
- 変数を宣言する時やメソッドの引数や戻り値を指定するときにデータ型を指定します。
- データ型は、コンパイル実行時等のプログラムを実行する前に決定されます。
- 決定されたデータ型の変数には、そのデータ型の値を代入します。
→文字列型を宣言した変数には、文字列型の値を代入します。
→データ型の使用方法が間違っていた場合、コンパイルエラーで教えてくれます。メリットです。 - プログラム言語のJavaやC#は、静的型付け言語です。
Java
Javaのコードのサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
String test1 = "あいうえお";
System.out.println(test1); // あいうえお
//test1 = 12345; // コンパイルエラー
System.out.println(test1); //
}
}
6行目は、変数のデータ型はStringと宣言して値を代入しています。
9行目のように、数値型の値を変数に代入しようとするとコンパイルエラーになります。
→プログラム実行前にチェックされています。
動的型付け
- 変数のデータ型はプログラム実行時前に決定されません。
- 変数に文字列型の値を代入後、数値型の値を代入できます。
- プログラム言語のJavaScriptやPythonは、動的型付け言語です。
JavaScript
JavaScriptのコードのサンプルです。
<script>
var test1 = "あいうえお"
console.log(test1); // あいうえお
test1 = 12345
console.log(test1); // 12345
</script>
3行目は、変数のデータ型は宣言されていません。変数に文字列型の値を代入しています。
6行目は、文字列型として使用した変数に、数値型の値を代入しています。
Javaとは異なりエラーにならず、実行できます。
静的型付け言語のC#の型推論
- varは、コンパイル時に型を推論し、変数に具体的な型を割り当てます。
→静的型付け + 型推論 - 実際にはvarという型があるわけではなく、コンパイラが自動的に本来の型に置き換えるイメージです。
C#
C#の 型推論のサンプルです。
using System;
class Test1
{
static void Main()
{
var test1 = "あいうえお";
Console.WriteLine(test1); // あいうえお
//test1 = 12345; // コンパイルエラー
Console.WriteLine(test1);
}
}
7行目は、文字列型の値を変数に代入しています。
10行目のように、数値型の値を変数に代入しようとするとコンパイルエラーになります。
→変数のデータ型は文字列型になっています。
関連の記事