秉着簡潔而不失完整的的原則,這章隻把Scala主要文法和與Java不同的内容列出來,以後章節也如此,内容以簡潔為主,太長了自己都被吓着了,也沒耐心看下去。
1.Scala解釋器使用,這裡不做介紹,有IDE這玩意一般用不着。
2.基本資料類型
Java原始類型在scala包裡都有對應的類。例如,scala.Boolean對應着Java的boolean。scala.Float對應着Java的float。當你把你的Scala代碼編譯成Java位元組碼,Scala編譯器将使用Java的原始類型以便獲得其帶來的性能益處。
3.定義變量
Scala有兩種變量,val和var。val類似于Java裡的final變量。一旦初始化了,val就不能再指派了。與之對應的,var如同Java裡面的非final變量。var可以在它生命周期中被多次指派。
val msg1=”hello scala”
var msg2=”hello world”
仔細看上面定義的2個變量好像都沒有類型聲明,這是怎麼回事呢?這就要說到Scala的類型推斷(type inference),因為你用了一個字元串來初始化msg變量,Scala推斷msg的類型是String。你也可以顯式地定義類型,有些時候也應該這麼做。顯式的類型标注不但可以確定Scala編譯器推斷你傾向的類型,還有助于以後代碼的閱讀。
val msg : String=”hello scala” 與Java不同的是類型聲明在變量後面,用一個”:”分隔。
4.定義函數
上面已經定義了變量,現在開始學習怎麼定義一個函數
def max(x: Int, y: Int): Int = { //定義函數
if (x > y) x
else y
}
max(3,7) //調用函數
自己對照看與 java函數有什麼不同,函數體隻有一句的大括号可以省略寫成 :
def max(x: Int, y: Int) = if (x > y) x else y
結果類型也去掉了,編譯器類型推斷可得出,盡管如此帶上結果類型也是一個好習慣,便于其他人閱讀代碼。

Scala的Unit結果類型指的是函數沒有傳回有用的值。Scala的Unit類型比較接近Java的void類型,而且實際上Java裡每一個傳回void的方法都被映射為Scala裡傳回Unit的方法。是以結果類型為Unit的方法,僅僅是為了它們的副作用而運作
注:java裡的i++和++i在scala裡是行不通的。
本文來自雲栖社群合作夥伴“開源中國”
本文作者:山海經
原文連結