Scala 字面量

简介: Scala 字面量

在 Scala 中,字面量(Literals)是直接表示固定值的表达式。

Scala支持各种类型的字面量,涵盖了数值、字符、字符串、布尔值等。

整型字面量

整型字面量用于 Int 类型,如果表示 Long,可以在数字后面添加 L 或者小写 l 作为后缀。

整型字面量可以是十进制、十六进制和八进制。

  • 十进制:42, 0, -99
  • 十六进制:以0x0X开头,如0x2A, 0x0, 0XFF
  • 八进制:Scala 2.10 之前支持八进制字面量,以 0 开头,但在 Scala 2.10 及之后的版本中,八进制字面量被移除。

val decimal = 42

val hex = 0x2A

浮点型字面量

如果浮点数后面有 f 或者 F 后缀时,表示这是一个 Float 类型,否则就是一个 Double 类型的。

  • 双精度:3.14, -0.001, 1.0e-10
  • 单精度:3.14f, -0.001F

val doubleValue = 3.14

val floatValue = 3.14f

布尔型字面量

布尔型字面量有 true 和 false。

val isScalaFun = true

val isSkyGreen = false

符号字面量

符号字面量被写成: '<标识符> ,这里 <标识符> 可以是任何字母或数字的标识(注意:不能以数字开头)。这种字面量被映射成预定义类 scala.Symbol 的实例。

如:符号字面量 'x 是表达式 scala.Symbol("x") 的简写,符号字面量定义如下:

package scala

final case class Symbol private (name: String) {

  override def toString: String = "'" + name

}

字符字面量

在 Scala 字符变量使用单引号 ' 来定义,如下:

'a' 

'\u0041'

'\n'

'\t'

其中 \ 表示转义字符,其后可以跟 u0041 数字或者 \r\n 等固定的转义字符。

字符串字面量

在 Scala 字符串字面量使用双引号 " 来定义,如下:

"Hello,\nWorld!"

"菜鸟教程官网:www.runoob.com"

  • 普通字符串:"Hello, World!"
  • 多行字符串:使用三重引号 """ 括起来,可以包含换行符和引号。

多行字符串的表示方法

多行字符串用三个双引号来表示分隔符,格式为:""" ... """

实例如下:

val foo = """菜鸟教程

www.runoob.com

www.runnoob.com

以上三个地址都能访问"""

Null 值

Null是一个特殊的字面量,表示所有引用类型的空值。

空值是 scala.Null 类型。

Scala.Null 和 scala.Nothing 是用统一的方式处理 Scala 面向对象类型系统的某些"边界情况"的特殊类型。

Null 类是 null 引用对象的类型,它是每个引用类(继承自AnyRef的类)的子类。Null不兼容值类型。

val nullValue: String = null

Unit

Unit 类型只有一个实例值,用字面量 () 表示,类似于 Java 中的 void。

val unitValue: Unit = ()

实例

以下是使用不同类型字面量的示例代码:

实例

object LiteralsExample {

 def main(args: Array[String]): Unit = {

   // 数值字面量

   val decimal = 42

   val hex = 0x2A

   val doubleValue = 3.14

   val floatValue = 3.14f

 

   // 字符字面量

   val charA = 'A'

   val charNewLine = '\n'

 

   // 字符串字面量

   val greeting = "Hello, World!"

   val multilineString = """This is
                           |a multi-line
                           |string"
"".stripMargin

 

   // 布尔字面量

   val isScalaFun = true

   val isSkyGreen = false

 

   // 特殊字面量

   val nullValue: String = null

   val unitValue: Unit = ()

 

   // 输出示例

   println(s"Decimal: $decimal, Hex: $hex")

   println(s"Double: $doubleValue, Float: $floatValue")

   println(s"Char: $charA, New Line: $charNewLine")

   println(s"Greeting: $greeting")

   println(s"Multiline String: $multilineString")

   println(s"Is Scala Fun: $isScalaFun, Is Sky Green: $isSkyGreen")

   println(s"Null Value: $nullValue, Unit Value: $unitValue")

 }

}

以上代码编译执行结果为:

Decimal: 42, Hex: 42

Double: 3.14, Float: 3.14

Char: A, New Line: 


Greeting: Hello, World!

Multiline String: This is

a multi-line

string

Is Scala Fun: true, Is Sky Green: false

Null Value: null, Unit Value: ()

目录
相关文章
|
11月前
|
编译器
Zig 流程控制
Zig 流程控制
109 3
|
12月前
|
机器人 网络安全 数据安全/隐私保护
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
本文介绍了如何在服务器上搭建NTQQ机器人,通过官方NTQQ对接各框架,实现QQ登录的稳定运行。文章提到了需要准备一台服务器和相应的软件,并详细描述了通过SSH链接服务器、创建文件夹和配置文件、编辑配置文件地址端口、运行容器等步骤。同时,文章还介绍了VNC连接的使用和配置,以及使用watchtower进行NTQQ的更新。文章总结起来就是在服务器上搭建NTQQ机器人,实现QQ登录的稳定性和自动登录功能,同时提供了更新和维护的方法。
884 3
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
|
12月前
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
253 2
|
12月前
|
NoSQL MongoDB 数据库
MongoDB 删除集合
10月更文挑战第14天
327 1
|
11月前
|
算法 物联网 异构计算
基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4FSK调制解调系统的Verilog实现,包括高斯信道模块和误码率统计模块,支持不同SNR设置。系统在Vivado 2019.2上开发,展示了在不同SNR条件下的仿真结果。4FSK调制通过将输入数据转换为四个不同频率的信号来提高频带利用率和抗干扰能力,适用于无线通信和数据传输领域。文中还提供了核心Verilog代码,详细描述了调制、加噪声、解调及误码率计算的过程。
393 11
|
11月前
|
JSON 缓存 API
探索后端开发中的RESTful API设计原则
【10月更文挑战第41天】在后端开发的广阔天地中,API的设计如同绘制一幅精细的地图,指引着数据的流向和前端的交互。本文将带你走进RESTful API的世界,一起探索如何用简洁高效的设计原则来构建一个清晰、可维护且易于理解的API结构。我们将从RESTful API的基础概念出发,通过实际案例分析,揭示如何在实践中应用这些设计原则,并讨论如何在复杂的业务逻辑中保持API的简洁性和一致性。
|
11月前
|
存储 关系型数据库 MySQL
MySQL 8.0特性-自增变量的持久化
【11月更文挑战第8天】在 MySQL 8.0 之前,自增变量(`AUTO_INCREMENT`)的行为在服务器重启后可能会发生变化,导致意外结果。MySQL 8.0 引入了自增变量的持久化特性,将其信息存储在数据字典中,确保重启后的一致性。这提高了开发和管理的稳定性,减少了主键冲突和数据不一致的风险。默认情况下,MySQL 8.0 启用了这一特性,但在升级时需注意行为变化。
228 1
|
11月前
|
XML 存储 JSON
企业采购比价:品牌采购时借用淘宝商品详情接口来采购比价
企业在品牌采购中,利用淘宝商品详情接口进行比价,可获取详尽的商品信息,确保数据的实时性和准确性,从而优化采购决策。实施步骤包括注册申请、接口调用、数据处理及比价分析,帮助企业高效选择优质供应商。
|
12月前
|
存储 NoSQL MongoDB
MongoDB 复制(副本集)
10月更文挑战第17天
178 2
MongoDB 复制(副本集)
|
12月前
|
NoSQL Java MongoDB
MongoDB Limit 与 Skip 方法
10月更文挑战第16天
166 3