Scala开发教程(6): 基本数据类型

jerry Scala 2015年11月25日 收藏

本篇介绍Scala支持的基本数据类型,如果你是个Java程序员,你会发现Java支持的基本数据类型,Scala都有对应的支持,不过Scala的数据类型都是对象(比如整数),这些基本类型都可以通过隐式自动转换的形式支持比Java基本数据类型更多的方法。隐式自动转换的概念将在后面介绍,简单的说就是可以为基本类型提供扩展,比如如果调用(-1).abs() ,Scala发现基本类型Int 没有提供abs()方法,但可以发现系统提供了从Int类型转换为RichInt的隐式自动转换,而RichInt具有abs方法,那么Scala就自动将1转换为RichInt类型,然后调用RichInt的abs方法。
Scala的基本数据类型有:Byte,Short,Int,Long和Char(这些成为整数类型)。整数类型加上Float和Double成为数值类型。此外还有String类型,除String类型在java.lang包中定义,其它的类型都定义在包scala中。比如Int的全名为scala.Int。实际上Scala运行环境自动会载入包scala和java.lang中定义的数据类型,你可以使用直接使用Int,Short,String 而无需再引入包或是使用全称。

下面的例子给出了这些基本数据类型的字面量用法,由于Scala支持数据类型推断,你在定义变量时多数可以不指明数据类型,而是由Scala运行环境自动给出变量的数据类型:

Welcome to Scala version 2.11.0-M5 (OpenJDK 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> var hex=0x5
hex: Int = 5

scala> var hex2=0x00ff
hex2: Int = 255

scala> val prog=0xcafebabel
prog: Long = 3405691582

scala> val littler:Byte= 38
littler: Byte = 38

scala> val big=1.23232
big: Double = 1.23232

scala> val a='A'
a: Char = A

scala> val f ='\u0041'
f: Char = A

scala> val hello="hello"
hello: String = hello

scala> val longString=""" Welcome to Ultamix 3000. Type "Help" for help."""
longString: String = " Welcome to Ultamix 3000. Type "Help" for help."

scala> val bool=true
bool: Boolean = true

scala>

Scala的基本数据类型的字面量也支持方法(这点和Java不同,Scala中所有的数值字面量也是对象),比如:

scala> (-2.7).abs
res3: Double = 2.7

scala> -2.7 abs
warning: there were 1 feature warning(s); re-run with -feature for details
res4: Double = 2.7

scala> 0 max 5
res5: Int = 5

scala> 4 to 6
res6: scala.collection.immutable.Range.Inclusive = Range(4, 5, 6)

这些方法其实是对于数据类型的Rich类型的方法,Rich类型将在后面再做详细介绍。