Scala基本語法(一)

認識Scala

  1. 同樣是以JVM環境運行
  2. 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”;
    和函數類似,最后一個語句就是表達式的返回值;


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


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


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

    還可以迭代一個字符串


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


  • 數組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集合類

  • 元組


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容

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