認識Scala
- 同樣是以JVM環境運行
- Scala語言底層就是Java
Scala命令行學習語法
-
整數相加
res0是scala中的shell給出的一個默認的變量名稱,用來存儲這個結果的,冒號后面即為這個結果的類型。
-
輸出文本
println是scala預定義導入的類。
- 寫helloworld程序
// object表示這是一個單例對象
object HelloWorld {
// args為參數名,Array[String]參數類型
def main(args: Array[String]) = {
print("Hello world!")
}
}
-
定義變量
val定義的變量,表示這個變量的值是不可更改的,第一個是沒有明確指定變量類型,scala會自己推斷;第二個是明確指定變量類型的。
var關鍵字定義的變量是可以更改的。
在用val關鍵字前面加上lazy關鍵字,可以讓這個變量變成懶加載,執行這條語句的時候不會讀取值,只會聲明這個變量,只有真正要使用到這個變量的時候,才會讀取值。
-
數據類型
和java類似的有,Byte Short Int Long Char String Float Double Boolean。只是每個類型的首字母都是大寫。還有幾個特別的類型Unit(可以看作void),Any類型(是所有類型的超類),Null,Nothing(表示沒有值)
類型關系圖 -
函數定義
從左往右一次是:def關鍵字,函數名,參數列表,返回值類型,最后是函數體。參數列表可以省略,當參數列表省略時,調用函數可以不加最后的左右小括號。返回值類型和等號也可以省略(省略后返回值為Unit類型)。 函數體最后一條語句的值即為函數返回值,scala中沒有return關鍵字。各個語句也不要用 ; 作為行結束符
-
匿名函數
-
為函數指定默認參數
-
為函數指定變長參數
-
控制語句if
if表達式本身就是有值的,比如上面這個表達式的值就是“yes”;
和函數類似,最后一個語句就是表達式的返回值;
- 循環語句while和do while
scala的while循環語句和java類似,但是scala不支持break和continue語句 -
循環語句for
1 to 10可以看作為 1.to(10)。返回的是一個可以迭代的序列
還可以迭代一個字符串
-
雙層循環實現乘法表(雙層循環)
-
數組Array(長度固定)
定義數組。當數組中的每個元素類型不相同時,則會取公共的父類型。
訪問數組,用圓括號下標從0訪問。
-
數組ArrayBuffer(長度不固定)
定義buffer數組,首選需要導入包(import scala.collection.mutable.ArrayBuffer)
對buffer數組添加一個元素
對buffer一次性添加多個元素
ArrayBuffer有很多方法:insert、remove、trimEnd等等,可以方便的對數組進行操作 -
Array和ArrayBuffer之間的相互轉換
Array轉化為ArrayBuffer類型:
ArrayBuffer類型轉化為Array類型:
-
迭代數組
-
不可變集合(多個<key,value>組成)
-
可變集合。注意:由于這個Map只是一個抽象類,要創建空的Map,必須要用實現類HashMap去創建。
判斷集合中是否存在某一個鍵值對,兩種相同的方式。
-
對集合排序
按照key排序
按照插入元素的順序排序,可以使用LinkedHashMap集合類
-
元組