大數據Hadoop第九周——Scala開發環境搭建+Scala語言值變量類型表達式

大數據第9

1.Scala開發環境搭建

  • 目前具備全部功能的集成開發環境只有Idea。
  • 下載解壓idea:tar -zxvf ideaIE-2019.3.3.tar.gz。
  • 進入bin目錄,執行:./idea.sh。
  • 選擇新建一個project。

  • 接着按如下界面選擇。

  • 進入如下界面。輸入Project name。

  • JDK選擇我們hadoop系統使用的同一個軟件包:點擊JDK欄右側的“New”,在界面中選擇我們使用的jdk1.8文件夾,然後點擊“OK”。

  • 點擊“Scala SDK”右側的 “Create”,如果在以下界面中有scala顯示,那麼檢查版本號是否與我們使用的(2.11.12)相同,如果相同,可以直接選擇,如果不同,點擊下方“Browse”。

  • 選擇我們使用的Scala軟件包的文件夾,點擊下方“OK”。

  • 項目建立後,點擊項目界面左側的“src”。因爲我們將在src下建立文件。

  • 在主菜單點擊“New”,選擇“Scala Class”。

  • 跳出如下界面,要在在界面中選擇“Object”,輸入名字後回車。不要選“Class”。Scale的順序是project,然後object,要有object纔可以運行,與java不同。

  • 若要調字體大小等,點擊在“File”菜單裏的“Setting”,在“Editor”的“Font”下更改,如圖所示。

  • 在界面中輸入一段程序,寫入main,選擇“main”會自動建立一個function。下入一段程序。鼠標光標點在程序上,點擊右鍵,選擇“Run”。

  • 結果顯示如下圖:

 2.SCALA語言簡介

2.1值和變量

  • 值:val

變量:var

“值”類型聲明後不可以更改數值,而“變量”類型可以。

  • 聲明時可以指定數值類型,也可以不指定,不指定時系統會自動判定。
  • 指定類型方式:用冒號“:”:例如:val c:Float=5。
  • 注意對大小寫敏感。聲明時如果不指定數據類型,則根據初始化的字面量,系統自動進行判斷,判斷的原則是:

  • 數值類型在計算中可以進行自動轉換,如果計算的數值類型不同,將向高級的數值類型自動轉換,而不會向低級的數據類型進行轉換。

  • 如果要手工轉換數據類型,使用toType方法。如果轉成Int型是toInt,轉成Float型是toFloat。

    1. Scala類型
  • C和Java基本類是Object,而Scala是Any。它包括數值類型和引用類型。如下圖所示。

2.3 String類型

  • String類型都是引用類型。
  • 要在String中加入值或變量,更直接的一種方式是利用字符串內插。
  • 字符串內插:在字符串中插入變量,顯示爲變量的值,用“$”。

 3.Scala的表達式

3.1表達式的返回值

  • Scala語言的表達式返回值不是用return語句,而是最後執行的那一句就是返回語句。
  • 如圖在“{}”中的是一句表達式,最後執行的那一句“a”、“b”、“c”就是返回語句。這是Scala區別於其它語言的較大的不同點,其它語言一般都用“return”返回。

如果沒有“{}”那就說明不是一句表達式,每一句表達式都會有返回。變量“resA”只是用來存儲表達式的返回值。

3.2 if表達式

  • Scala只有if,else,沒有其他語言常用的if,else if,else if,else格式。沒有“?”表達式語句,比如java中的System.exit(job.waitForCompletion(true) ? 0 : 1);。

3.3 匹配表達式

  • 類似其他語言的case語句。

object testScala {
  def main(args: Array[String]): Unit = {
    val x=10; val y=20
    val max=x>y match{
        case true =>println(s"Received data is $x.");x
        case false =>println(s"Received data is $y.");y
    }
    println(s"The max is $max.")
  }
}
  • 通配模式匹配,用“other”或“_”。

object testScala2 {
  def main(args: Array[String]): Unit = {
    var message="OK"
    val status = message match {
        case "OK" => 200
        case other => {
          println(s"Couldn't parse $other")
          -1
        }
    }
    println(s"status is $status")
    message="hhh"
    val status2 = message match {
      case "OK" => 200
      case other => {
        println(s"Couldn't parse $other")
        -1
      }
    }
    println(s"status2 is $status2")
  }
}
  • 模式哨衛匹配。
  • 第一個例子:

object testScala3 {
  def main(args: Array[String]): Unit = {
    val response:String="OK"
    val res=response match{
      case s if s!=null =>println(s"Received s is $s.");s
      case s =>println(s"Other $s");
    }
    println(s"The res is $res.")
  }
}
  • 第二個例子:

object testScala4 {
  def main(args: Array[String]): Unit = {
    val x:Int=12180
    val y:Any=x
    val res=y match{
      case x:String =>println(s"$x.");x
      case a:Float =>println(s"$a%.2f.");a
      case b:Double =>println(s"$b..2f.");b
      case c:Long =>println(s"${c}l.");c
      case d:Int =>println(s"${d}i.");d
    }
    println(s"The res is $res.")
  }
}

3.4 循環(下次講)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章