[Scala学习之旅] 宜动宜静的Scala

学点什么

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'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喝冰咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值