1、REPLjava
scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式。这个过程被称做 读取-打印-循环,即REPL。程序员
从技术上讲,scala程序并非一个解释器。实际发生的是,你输入的内容被快速的编译成字节码,而后这段字节码交由java虚拟机执行。正因如此,大多数scala程序员更倾向将它称做REPL。es5
2、声明值spa
2.1val定义的值其实是一个常量,你没法改变它的内容。scala
scala> val result = 8*2 result: Int = 16 scala> result = 0 <console>:11: error: reassignment to val result = 0 ^
scala鼓励使用valcode
你须要给出值或者变量的类型,声明值或者变量但不作初始化会报错。对象
在必要的时候,你也能够指定类型blog
scala> val result = 8*2 result: Int = 16 scala> result = 0 <console>:11: error: reassignment to val result = 0 ^
3、scala经常使用类型ci
3.1基本数据类型字符串
scala和java中的数据类型同样有8种,可是在scala中并不刻意区分基本类型和引用类型。你能够对一个对数字执行方法,例如
scala> 1.toString()
res1: String = 1
在scala中咱们不须要包装类型,在基本类型和包装类型之间的转换是scala编译器的工做。
BigInt和BigDecimal类,用于任意大小的数字。这些类背后分别对应的是java.math.BigInteger和java.math.BigDecimal。他们用起来更加方便,你能够用常规的数学操做符来操做他们。
3.2字符串类型
scala用底层的java.lang.String类来表示字符串。不过,他经过StringOps类给字符串追加了上百种操做。
intersect方法输出两个字符串共同的一组字符
scala> "hello".intersect("world") res0: String = lo
在这个表达式中,String对象被隐式的转换为了StringOps对象,接着StringOps类的intersect方法被调用。
一样的scala还提供了RichInt、RichDouble、RichChar等。他们提供了Int,Double,Char所不具有的快捷方法。咱们前面用到的1.toString就是RichInt类中的方法。首先1被转换成了RichInt,而后再应用头方法。
3.3类型转换
在scala中咱们使用方法而不是强制类型转换。
scala> 99.44.toInt res3: Int = 99 scala> 99.toChar res4: Char = c scala> "99.44".toDouble res5: Double = 99.44