2-Scala语法

本文介绍了Scala中的数据类型,包括数值类型、非数值类型、String类型及其特性;详细解释了Scala中的两种变量val和var的区别及使用方法;并探讨了Scala中的标识符和操作符的特殊规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数据类型

    Scala有7种数值类型:Byte、Char、Short、Int、Long、Float和Double,以及2种非数值类型:Boolean和Unit(只有一个值“()”,相当于java和c++中的void,即空值)。
    这些类型都是抽象的final类(不能使用new新建,也不能被继承),在scala包中定义,是对java基本数据类型的包装,因此与java基本数据类型有相同的长度。同时,scala还提供了RichInt、RichChar等等,它们分别提供Int、Char等所不具备的便捷方法。
    Scala沿用了java.lang包中的String。在scala中,常量也称作字面量,字符串字面量由双引号包含的字符组成,同时scala提供了另一种定义字符串常量的语法——原始字符串,它以三个双引号作为开始和结束,字符串内部可以包含无论何种任意字符。

  • 变量

    Scala有两种变量:val和var
    val如同java中的final变量,var如同java中的非final变量。由于scala是完全面向对象的,因此val和var只是声明了对象的引用是不可变的还是可变的,并不能说明引用指向的对象的可变性。声明变量的同时需要初始化之,否则该变量就是抽象的。如果不指定变量的类型,编译器会从初始化它的表达式中推断出其类型。
    例子:

    val answer = “yes”
    val answer, message: String = “yes”
  • 标识符

    scala标识符有四种形式:字母数字标识符、操作符标识符、混合标识符、字面量标识符。
    (1)字母数字标识符:跟其他语言类似,由字母、数字和下划线组成,但需注意美元字符被保留作为scala编译器产生的标识符之用,不要随意使用。
    (2)操作符标识符:由一个或多个操作符字符组成。scala编译器将在内部“粉碎”操作符标识符以转换成合法的内嵌“$”的java标识符。若你想从java代码中访问这个标识符,就应该使用这种内部表示方式。
    (3)混合标识符:由字母数字以及后面跟着的下划线和一个操作符标识符组成。如unary_+定义了一个前缀操作符“+”。
    (4)字面量标识符:是用反引号包含的任意字符串,scala将把被包含的字符串作为标识符,即使被包含字符串是scala的关键字。例如:你可以使用Thread.yield()来访问java中的方法,即使yield是scala的关键字。

  • 操作符

    Scala的操作符和在java和C++中的预期效果是一样的,但注意scala并不提供++、–操作符。不过scala中的操作符实际上都是方法,任何方法都可以当作操作符使用,如 a + b 相当于 a.+(b)。
    注意:对于不可变对象(注:对象的不可变并不是说它的引用变量是val的),并不真正支持类似于“+=”这样以“=”结尾的操作符(即方法)。

  • 快表达式与赋值

    在Scala中,{}块包含一系列表达式,其结果也是一个表达式,块中最后一个表达式的值就是其值。
    在scala中,赋值语句本身的值是Unit类型的。因此如下语句的值为“()”:

    {r = r * n; n -= 1}

    正是由于上述原因,scala中不能多重赋值,而java和c++却可以多重赋值。因此,在scala中,如下语句中的x值为“()”:

    x = y = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值