Scala编程基础4:Scala数据类型

2020-04-08  本文已影响0人  金字塔下的小蜗牛

Scala与Java有着相同的数据类型,下表列出了Scala支持的数据类型:

image

上表中列出的数据类型都是对象,也就是说Scala没有Java中的原生类型。在Scala中可以对数字等基础类型调用方法。

1.Scala基础字面量

Scala非常简单且直观。接下来我们会详细介绍Scala字面量。

1.1 整型字面量

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

scala> 21 //十进制
res1: Int = 21
scala> 035 //新版Scala不支持八进制
<console>:1: error: Decimal integer literals may not have a leading zero. (Octal
syntax is obsolete.)
035
^
scala> 0xFFFF //十六进制
res2: Int = 65535
scala> 123L //Long型
res3: Long = 123

1.2 浮点型字面量

浮点型默认是Double类型,如果想表示Float类型需要在数字后面加上F或者f:

scala> 0.0
res5: Double = 0.0
scala> 1e30f
res6: Float = 1.0E30
scala> 2.0e100
res7: Double = 2.0E100
scala> .1 //新版Scala不支持这种省略前面的0的写法
<console>:1: error: ';' expected but double literal found.
res7.1
^

1.3 布尔型字面量

布尔型字面量只有true和false两种。

1.4 符号字面量

符号字面量的形式为:'<标识符>,这里的标识符可以是任何字母或者数字(不能以数字开头),这种字面量被映射成预定义类scala.Symbol的实例。如:符号字面量’x是表达式scala.Symbol(“x”)的简写,符号字面量定义如下:

package scala
final case class Symbol private (name: String) {
    override def toString: String = "'"+ name
}

符号字面量的例子如下:

scala> 'x
res8: Symbol = 'x
scala> scala.Symbol("c")
res10: Symbol = 'c

1.5 字符字面量

在scala中字符类型表示为半角单引号(‘)中的字符,如下:

scala> 'a'
res11: Char = a
scala> '\u0041'
res12: Char = A
scala> '\n'
res13: Char =
scala> '\t'
res14: Char =

其中\表示转义字符,转义后的字符有特殊的含义,如\n表示换行,\t表示水平制表符等。

1.6 字符串字面量

字符串表示方法时在双引号中(“”)包含一些列字符,如:

scala> "Hello Scala !"
res15: String = Hello Scala !

1.7 多行字符串的表示方法

多行字符串使用三层双引号(“”””””)括起来的字符串,支持换行,例如:

scala> """Hello
| Scala
| !
| """
res16: String =
"Hello
Scala
!
"

1.8 Null值

空值是scala.Null类型。scala.Null和scala.Nothing是用统一的方式处理Scala面向对象类型系统的某些“边界情况”的特殊类型。Null类是null引用对象的类型,它是每个引用类(继承自AnyRef的类)的子类。Null不兼容值类型。例如:

scala> null
res17: Null = null
scala> var a:Null = 10
<console>:11: error: type mismatch;
found : Int(10)
required: Null
var a:Null = 10
^

1.9 Scala转义字符

下面列出了Scala中常见的转义字符:

image

0到255之间的Unicode字符可以使用一个八进制转义序列来表示,即反斜线\后面最多跟三个八进制数字。在字符或者字符串中,反斜线\和后面的字符序列如果不能构成一个合法的转义序列将导致编译错误。下面的例子演示了转义字符的使用:

编写一个Test.scala的文本文件,内容如下:

object Test {
   def main(args: Array[String]) { println("Hello\tWorld\nI Love \'Scala\'" );
   }
} 

执行以上代码输出结果如下所示:

E:\Test>scalac Test.scala
E:\Test>scala Test
Hello World
I Love 'Scala'

上一篇 下一篇

猜你喜欢

热点阅读