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运行环境自动给出变量的数据类型:

  1. Welcome to Scala version 2.11.0-M5 (OpenJDK 64-Bit Server VM, Java 1.7.0_25).
  2. Type in expressions to have them evaluated.
  3. Type :help for more information.
  4.  
  5. scala> var hex=0x5
  6. hex: Int = 5
  7.  
  8. scala> var hex2=0x00ff
  9. hex2: Int = 255
  10.  
  11. scala> val prog=0xcafebabel
  12. prog: Long = 3405691582
  13.  
  14. scala> val littler:Byte= 38
  15. littler: Byte = 38
  16.  
  17. scala> val big=1.23232
  18. big: Double = 1.23232
  19.  
  20. scala> val a='A'
  21. a: Char = A
  22.  
  23. scala> val f ='\u0041'
  24. f: Char = A
  25.  
  26. scala> val hello="hello"
  27. hello: String = hello
  28.  
  29. scala> val longString=""" Welcome to Ultamix 3000. Type "Help" for help."""
  30. longString: String = " Welcome to Ultamix 3000. Type "Help" for help."
  31.  
  32. scala> val bool=true
  33. bool: Boolean = true
  34.  
  35. scala>
  36.  

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

  1. scala> (-2.7).abs
  2. res3: Double = 2.7
  3.  
  4. scala> -2.7 abs
  5. warning: there were 1 feature warning(s); re-run with -feature for details
  6. res4: Double = 2.7
  7.  
  8. scala> 0 max 5
  9. res5: Int = 5
  10.  
  11. scala> 4 to 6
  12. res6: scala.collection.immutable.Range.Inclusive = Range(4, 5, 6)
  13.  

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