静的型付けと動的型付けの違いです。
目次
説明 | 静的型付け |
動的型付け | |
参考 | 静的型付け言語のC#の型推論 |
静的型付け
- 変数を宣言する時やメソッドの引数や戻り値を指定するときにデータ型を指定します。
- データ型は、コンパイル実行時等のプログラムを実行する前に決定されます。
- 決定されたデータ型の変数には、そのデータ型の値を代入します。
→文字列型を宣言した変数には、文字列型の値を代入します。
→データ型の使用方法が間違っていた場合、コンパイルエラーで教えてくれます。メリットです。 - プログラム言語の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#の型推論
- 静的型付け言語のC#には、型推論の機能があります。
- 変数宣言時にデータ型を明示しなくても自動でデータ型を推定して決定してくれます。
- varキーワードを使用します。varは、variableの略で変数という意味です。
→var=型推論ではありません。
C#
C#の 型推論のサンプルです。
using System;
class Test1
{
static void Main()
{
var test1 = "あいうえお";
Console.WriteLine(test1); // あいうえお
//test1 = 12345; // コンパイルエラー
Console.WriteLine(test1);
}
}
7行目は、変数のデータ型は宣言されていません。文字列型の値を変数に代入しています。
10行目のように、数値型の値を変数に代入しようとするとコンパイルエラーになります。
→変数のデータ型は文字列型になっています。
以下は、Wikipediaの動的型付けのリンクです。
https://ja.wikipedia.org/wiki/%E5%8B%95%E7%9A%84%E5%9E%8B%E4%BB%98%E3%81%91
関連の記事