![](https://csdnimg.cn/release/download_crawler_static/86283047/bg5.jpg)
2022/4/27 1_basic
huaxiaozhuan.com/Scala/chapters/1_basic.html 5/23
4.
字符字面量:由一对单引号、任意一个 Unicode
字符组成。这里除了显式的给出原始字符,也可
以用字符的 Unicode
码来表示: \u
加上 Unicode
码对应的四位十六进制数字。
事实上,这种 Unicode
字符的方式可以出现在 Scala
程序的任何位置,包括变量名中:
但这种方式并不友好,因为不容易阅读。
还有一些字符字面量是特殊转义字符:
\n :
换行符 \u000A
。
\b :退格符 \u000B 。
\t :制表符 \u0009 。
\f :换页符 \u000C 。
\r :回车符 \u000D 。
\" :双引号 \u0022 。
\' :单引号 \u0027 。
\\ :反斜杠 \u005C 。
5.
字符串字面量:由双引号包起来的字符组成。其中每个字符也可以用 Unicode
码表示,也支持转
义字符。
Scala
支持一种特殊语法来表示原生字符串 raw string :用三个双引号开始,并以三个双引号
结束。其内部可以包含任何字符,包括换行、单双引号、以及其它特殊字符(三个双引号除外)。
原生字符串对于包含大量转义字符、或者跨越多行的字符串比较友好。
6.
Symbol 字面量:格式为 'ident
,其中 ident
可以是任何字母、数字组成的标识符。
一个 Symbol
是一种特殊的字符串,相比较于 String
类型,它更节省内存并且相等比较的速度
很快。
事实上 String
类内部维护一个字符串池 strings pool 。当调用 String
的 intern()
方
法时,如果字符串池中已经存在该字符串,则直接返回池中字符串对象的引用;如果不存
在,则将该字符串添加到池中,并返回该字符串对象的引用。执行过 intern()
方法的字符
串被称作内部化了的,默认情况下代码中的字符串字面量都是内部化了的(在 Java
中,字
符串常量也是内部化了的)。同值字符串的 intern()
方法返回的引用都相同。
而在 Scala
中, Symbol
类型的对象是被内部化了的,任意同名 symbol
都指向同一个
Symbol ,因此节省了内存。
val float1 : Float = 1.1f
val float2 : Float = 123E45F // 带指数
val double1 : Double = 1.1
val double2 : Double = 123E45 // 也可以显式添加 d 或者 D 结尾
val a1 = 'A' // 字符字面量
val a2 = '\u0041' // 使用 Unicode 码
val \u0041B = 1 // 等价于 val AB=1
println("""This is a raw string: Contain "" and '' and \
and a new line
and another new line\n""")