Scala的变量和数据类型前篇

举报
WHYBIGDATA 发表于 2023/03/18 09:03:48 2023/03/18
【摘要】 Scala的变量和数据类型前篇

Scala的变量和数据类型前篇



写在前面

  • 操作系统:Windows10
  • JDK版本:jdk1.8
  • Maven版本:Maven-3.5.4
  • Scala版本:Scala-2.12.11
  • IDE工具:IntelliJ IDEA 2019.2.3

注释

Scala注释使用和Java完全一样。例子如下:

// 单行注释

/*
	多行注释
*/

/**
 * doc注释
 */
object ScalaComment{
    def main(args: Array[String]): Unit = {
    }
}

变量

变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。

语法声明

变量的类型在变量名之后等号之前声明,即:var | val 变量名 :变量类型 = 变量值。例子如下:

var name : String = "whybigdata"

变量的类型如果能够通过变量值推断出来,那么可以省略类型声明,这里的省略,并不是不声明,而是由Scala编译器在编译时自动声明编译的。例子如下:

object ScalaVariable {
    def main(args: Array[String]): Unit = {
        // 因为变量值为字符串,又因为Scala是静态类型语言,所以即使不声明类型
        // Scala也能在编译时正确的判断出变量的类型,这体现了Scala语言的简洁特性。
        var name = "whybigdata"
        val pwd = "123456" 
    }
}

变量初始化

Java语法中变量在使用前进行初始化就可以,但是Scala语法中是不允许的,必须显示进行初始化操作。例子如下:

object ScalaVariable {
    def main(args: Array[String]): Unit = {
        var name // Error
        var name = "whybigdata" // OK
    }
}

可变变量

值可以改变的变量,称之为可变变量,但是变量类型无法发生改变, Scala中可变变量使用关键字 var 进行声明。例子如下:

object ScalaVariable {
    def main(args: Array[String]): Unit = {
        // 用户名称
        var username : String = "whybigdata1"
        username = "whybigdata2" // OK
        username = true // Error
    }
}

不可变变量

值一旦初始化后无法改变的变量,称之为不可变变量。Scala中不可变变量使用关键字 val 进行声明, 类似于Java语言中的final关键字。例子如下:

object ScalaVariable {
    def main(args: Array[String]): Unit = {
        // 用户名称
        val username : String = "whybigdata1"
        username = "whybigdata2" // Error
        username = true // Error
    }
}

标识符

Scala 可以使用两种形式的标志符,字符数字和符号。

  • 字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号$在 Scala 中也看作为字母。然而以$开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用$开始的标识符,以免造成冲突。

  • Scala 的命名规范采用和 Java 类似的 camel 命名规范,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。

  • Scala 内部实现时会使用转义的标志符,比如: -> 使用 $colon$minus$greater 来表示这个符号。

例子如下:

// TODO 和Java一样的标识符命名规则
val name = "whybigdata" // OK
val name1 = "whybigdata0"   // OK
//val 1name = "whybigdata0" // Error
val name$ = "whybigdata1" // OK
val $name = "whybigdata2" // OK
val name_ = "whybigdata3" // OK
val _name = "whybigdata4" // OK
val $ = "whybigdata5"     // OK
val _ = "whybigdata6"     // OK
//val 1 = "whybigdata6"     // Error
//val true = "whybigdata6"  // Error

// TODO 和Java不一样的标识符命名规则
val + = "zhangsan" // OK
val - = "zhangsan" // OK
val * = "zhangsan" // OK
val / = "zhangsan" // OK
val ! = "zhangsan" // OK

//val @ = "zhangsan" // Error
val @@ = "zhangsan" // OK
//val # = "zhangsan" // Error
val ## = "zhangsan" // OK
val % = "zhangsan" // OK
val ^ = "zhangsan" // OK
val & = "zhangsan" // OK

//val ( = "zhangsan" // Error
//val ( = "zhangsan" // Error
//val ) = "zhangsan" // Error
//val = = "zhangsan" // Error
val == = "zhangsan" // OK
//val [ = "zhangsan" // Error
//val ] = "zhangsan" // Error
//val : = "zhangsan" // Error
val :: = "zhangsan" // OK
//val ; = "zhangsan" // Error
//val ' = "zhangsan" // Error
//val " = "zhangsan" // Error
val "" = "zhangsan" // OK
val < = "zhangsan" // OK
val > = "zhangsan" // OK
val ? = "zhangsan" // OK
val | = "zhangsan" // OK
val \ = "zhangsan" // OK
//val ` = "zhangsan" // Error
val ~ = "zhangsan" // OK

val :-> = "lisi" // OK
val :-< = "lisi" // OK
// 切记,能声明和能使用是两回事

Scala 中的标识符也不能是关键字保留字,Scala中关键字或保留字如下图所示:

1.png

前篇结束!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。