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