学点什么
Scala 到底是什么语言? 静态语言OR动态语言?
Java是静态语言,变量类型是在编译器决定的,其变量定义是这样的(虽然新版本也支持 val):
String str = "name";
int age = 18;
那Scala呢? Scala的变量定义可是这样的:
val str = "name"
var age = 18
Scala是动态语言吗?
基本概念
- 静态语言
所谓静态语言, 也就是强类型语言, 是在编译时变量的数据类型即可确定的语言, 如C++, Java等都是静态语言。
- 动态语言
所谓动态语言, 也就是弱类型语言, 是在运行时数据类型才能确定的语言, 如JavaScript, Shell, Python等都是动态语言。
Scala是什么语言
Scala是静态语言, 只是他是一个充满语法糖的语言, 虽然Scala变量在定义的时候没有指定类型, 但是Scala支持类型推断, 他贴心地根据变量的值来帮我们
推断出变量的真实类型。例如:
val name = "Tom" // str自动推断为String类型
var age = 18 // age自动推断为Int类型
而且数据类型是不可以更改的, 例如以下代码编译会报错:
def main(args: Array[String]): Unit = {
// age的类型在赋值时确定,虽然不用声明类型,是推断出来的Int型
var age = 18
println(age) // 18
println(age.getClass) // int
/**
* type mismatch;
* found : String("Hello")
* required: Int
* a = "Hello"
*/
age = "Hello"
}
而动态语言的数据类型是可以变化的, 例如如下Python代码, 变量age数据类型从int变成了 str
age = 18
print(age) # 18
print(age.__class__) # <class 'int'>
age = "十八"
print(age) # 十八
print(age.__class__) # <class 'str'>