我只是想弄清楚什么时候是一种已知是静态或动态类型的编程语言,或者同时被认为是静态类型和动态语言或动态类型和动态语言的概念。
我感到困惑的是,如果在 Java 的情况下变量的类型已知或在编译时定义时已知一种语言是静态类型的,即
//Java illustration of statically typed
int x, y; //explicit type declaration
x = 5, y = 10; //Now we use the variables
//Groovy illustration of statically typed
def x, y //explicit type declaration
x = 1, y = 10 //now we use the variables
根据阅读各种在线资源,它说被认为是静态类型的语言列表不包括 Groovy,而是 Java 和 C++。
此外,如果 Groovy 是一种动态语言(DL 的定义 - DL 是一种在编译时进行很少或不进行检查的语言,而是在运行时进行检查)。这是否意味着 Groovy 也是一种动态类型语言,因为对于被认为是动态类型的变量“是在运行时而不是编译时知道变量的类型”。
//Illustration of a language being dynamically typed according to DT and DL definition
x = 5 //directly using the variable (exceptable in Python and PHP but not in Java/Groovy)
如果在 Groovy 中是这种情况,那么上述 Groovy 静态类型化的代码说明与 Groovy 在运行时完成的检查定义相矛盾。
这是否意味着 java groovy 都不是动态类型语言,因为直接使用变量会在 Java 和 groovy 中抛出编译器错误。
如果我错了,请纠正我。请提供带有代码说明的示例。