Scala基本語法(一)

認(rèn)識Scala

  1. 同樣是以JVM環(huán)境運(yùn)行
  2. Scala語言底層就是Java

Scala命令行學(xué)習(xí)語法

  • 整數(shù)相加



    res0是scala中的shell給出的一個(gè)默認(rèn)的變量名稱,用來存儲這個(gè)結(jié)果的,冒號后面即為這個(gè)結(jié)果的類型。

  • 輸出文本



    println是scala預(yù)定義導(dǎo)入的類。

  • 寫helloworld程序
// object表示這是一個(gè)單例對象
object HelloWorld {
  // args為參數(shù)名,Array[String]參數(shù)類型
  def main(args: Array[String]) = {
    print("Hello world!")
  }
}
  • 定義變量



    val定義的變量,表示這個(gè)變量的值是不可更改的,第一個(gè)是沒有明確指定變量類型,scala會自己推斷;第二個(gè)是明確指定變量類型的。



    var關(guān)鍵字定義的變量是可以更改的。

    在用val關(guān)鍵字前面加上lazy關(guān)鍵字,可以讓這個(gè)變量變成懶加載,執(zhí)行這條語句的時(shí)候不會讀取值,只會聲明這個(gè)變量,只有真正要使用到這個(gè)變量的時(shí)候,才會讀取值。

  • 數(shù)據(jù)類型
    和java類似的有,Byte Short Int Long Char String Float Double Boolean。只是每個(gè)類型的首字母都是大寫。還有幾個(gè)特別的類型Unit(可以看作void),Any類型(是所有類型的超類),Null,Nothing(表示沒有值)


    類型關(guān)系圖
  • 函數(shù)定義



    從左往右一次是:def關(guān)鍵字,函數(shù)名,參數(shù)列表,返回值類型,最后是函數(shù)體。參數(shù)列表可以省略,當(dāng)參數(shù)列表省略時(shí),調(diào)用函數(shù)可以不加最后的左右小括號。返回值類型和等號也可以省略(省略后返回值為Unit類型)。 函數(shù)體最后一條語句的值即為函數(shù)返回值,scala中沒有return關(guān)鍵字。各個(gè)語句也不要用 ; 作為行結(jié)束符

  • 匿名函數(shù)


  • 為函數(shù)指定默認(rèn)參數(shù)


  • 為函數(shù)指定變長參數(shù)


  • 控制語句if



    if表達(dá)式本身就是有值的,比如上面這個(gè)表達(dá)式的值就是“yes”;
    和函數(shù)類似,最后一個(gè)語句就是表達(dá)式的返回值;


    如果兩種情況的返回值得類型不相同,會被轉(zhuǎn)化成Any類型
    上面兩種寫法是相同的,省略else時(shí)就是指else返回 "()" ,"()"就是空的語句塊,其類型就是Unit。
  • 循環(huán)語句while和do while
    scala的while循環(huán)語句和java類似,但是scala不支持break和continue語句
  • 循環(huán)語句for


    1 to 10可以看作為 1.to(10)。返回的是一個(gè)可以迭代的序列


    1 until 10和1 to 10類似,但是不包括10。還可以用Range(1,10)來代替1 until 10

    還可以迭代一個(gè)字符串


    for循環(huán)中使用yield會把當(dāng)前的值記錄下來,保存到一個(gè)索引序列中,當(dāng)循環(huán)結(jié)束,就會返回這個(gè)序列q
    可以在迭代序列的時(shí)候,添加if語句判斷,只迭代滿足if條件的。
  • 雙層循環(huán)實(shí)現(xiàn)乘法表(雙層循環(huán))


  • 數(shù)組Array(長度固定)
    定義數(shù)組。當(dāng)數(shù)組中的每個(gè)元素類型不相同時(shí),則會取公共的父類型。



    訪問數(shù)組,用圓括號下標(biāo)從0訪問。


  • 數(shù)組ArrayBuffer(長度不固定)
    定義buffer數(shù)組,首選需要導(dǎo)入包(import scala.collection.mutable.ArrayBuffer)



    對buffer數(shù)組添加一個(gè)元素



    對buffer一次性添加多個(gè)元素

    ArrayBuffer有很多方法:insert、remove、trimEnd等等,可以方便的對數(shù)組進(jìn)行操作
  • Array和ArrayBuffer之間的相互轉(zhuǎn)換
    Array轉(zhuǎn)化為ArrayBuffer類型:



    ArrayBuffer類型轉(zhuǎn)化為Array類型:


  • 迭代數(shù)組



  • 不可變集合(多個(gè)<key,value>組成)


  • 可變集合。注意:由于這個(gè)Map只是一個(gè)抽象類,要創(chuàng)建空的Map,必須要用實(shí)現(xiàn)類HashMap去創(chuàng)建。



    判斷集合中是否存在某一個(gè)鍵值對,兩種相同的方式。


  • 對集合排序
    按照key排序



    按照插入元素的順序排序,可以使用LinkedHashMap集合類

  • 元組


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,690評論 0 4
  • 當(dāng)當(dāng)當(dāng)~明天就是520啦~又是虐狗的一天,小伙伴們?nèi)绻菃紊淼脑?,記得明天少打開朋友圈,少刷微博,這樣可以把傷害降...
    蜘蜘紡閱讀 528評論 0 0
  • 秋天來的太快。還未感受秋意,便穿上了厚重的衣服。講真,除去天冷這一毛病。我還真喜歡冬天。最起碼爬行動物在冬眠呀。 ...
    釋釋閱讀 222評論 0 0
  • 今生 軀殼太低微 這樣美的院落 它去不了 可是 低微的軀殼里 偏有顆尊貴的靈魂 它天馬行空 尋覓它的棲息地 于是發(fā)...
    茶潤人生閱讀 202評論 0 1
  • 有人說小津的電影像白開水。 我最開始是通過《東京物語》知道小津的。 第一次看的時(shí)候沒撐幾分鐘就覺得太寡淡棄了,后來...
    樸湜閱讀 621評論 2 4

友情鏈接更多精彩內(nèi)容