好程序員大數據學習路線分享Scala系列之基礎篇

好程序員大數據學習路線分享Scala系列之基礎篇瞭解Scala
1.1 什麼是 Scala
Scala 是 Scalable Language 的簡寫,是一門多範式的編程語言。
Scala設計的初衷是要集成面向對象編程和函數式編程的各類特性。Scala運行於Java平臺(Java虛擬機),併兼容現有的Java程序。
函數式編程兩種理念:就是一種抽象程度很高的編程範式,純粹的函數式編程語言編寫的函數沒有變量,所以,任意一個函數,只要輸入是肯定的,輸出就是肯定的,這種純函數咱們稱之爲沒有反作用。而容許使用變量的程序設計語言,因爲函數內部的變量狀態不肯定,一樣的輸入,可能獲得不一樣的輸出,所以,這種函數是有反作用的。
函數式編程的一個特色就是,函數也是值,同容許把函數自己做爲參數傳入另外一個函數,還容許返回一個函數!
圖片描述java

1.2 Scala特色
Scala 是面向對象的
Scala是一個純面向對象的語言,全部的值都是對象,類和對象行爲用類和特質來描述.
Scala 是函數式的
Scala中函數是高等公民,全部函數都是值.
Scala是靜態類型的
圖片描述程序員

Scala 是可擴展的
1.3 爲何要學Scala
1.優雅:這是框架設計師第一個要考慮的問題,框架的用戶是應用開發程序員,API是否優雅直接影響用戶體驗。
2.速度快:Scala語言表達能力強,一行代碼抵得上Java多行,開發速度快;Scala是靜態編譯的,因此和JRuby,Groovy比起來速度會快不少。
3.能融合到Hadoop生態圈:Hadoop如今是大數據事實標準,Spark並非要取代Hadoop,而是要完善Hadoop生態。JVM語言大部分可能會想到Java,但Java作出來的API太醜,或者想實現一個優雅的API太費勁。
圖片描述編程

2 環境準備
2.1 JDK安裝
由於Scala是運行在JVM平臺上的,因此安裝Scala以前要安裝JDK
2.2 Scala安裝
下載Scala地址而後解壓Scala到指定目錄
tar -zxvf scala-2.10.6.tgz -C /usr/java
配置環境變量,將scala加入到PATH中
vi /etc/profile數組

export JAVA_HOME=/usr/java/jdk1.7.0_45網絡

export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin
2.3. Scala開發工具安裝
目前Scala的開發工具主要有兩種:Eclipse和IDEA,這兩個開發工具都有相應的Scala插件,若是使用Eclipse,直接到Scala官網下載便可。框架

因爲IDEA的Scala插件更優秀,大多數Scala程序員都選擇IDEA,能夠到下載社區免費版,點擊下一步安裝便可,安裝時若是有網絡能夠選擇在線安裝Scala插件。這裏咱們使用離線安裝Scala插件:編程語言

1.安裝IDEA,點擊下一步便可。因爲咱們離線安裝插件,因此點擊Skip All and Set Defaul
2.下載IEDA的scala插件,
3.安裝Scala插件:File -> settings -> Plugins -> Install plugin from disk -> 選擇Scala插件 -> OK -> 重啓IDEA
圖片描述函數式編程

  1. Scala基礎

3.1. 值和變量
使用var 聲明一個變量。
•scala語言是強類型語言。
•var修飾的變量,內容和引用均可變
使用val聲明一個常量或值
•val修飾的變量是不可變的,注意不可變的不是內容,而是引用;
•val修飾的變量,至關於Java中final修飾的變量;
•只有val修飾的變量才能被lazy修飾;使用lazy定義變量後,只有在調用該變量時纔會實例化這個變量的值。並且惰性變量只能是不可變變量;
//變量定義方式
var a:int = 1
var aa = 1
val aaa:Int = 3
val aaaa = 4
lazy val aaaaa = 4
官方推薦使用val。
2.val和var區別示意:
可使用數組,更容易懂
class A(n: Int) {
var value = n
}函數

class B(n: Int) {
val value = new A(n)
}工具

object Test {
def main(args: Array[String]) {
val x = new B(5)
x = new B(6) // 錯誤?
x.value = new A(6) // 錯誤?
x.value.value = 6 // 正常
}
}
3.lazy
相似方法,先聲明,後調用
圖片描述

4.val or var
在val和var都可的條件下,官方推薦使用val
3.2. 經常使用類型
Scala和Java同樣,有7種數值類型Byte、Char、Short、Int、Long、Float、Double和一個Boolean類型,
和Java不一樣的是 ,Scala沒有基本類型與包裝類型之分,這些類型都是類,有本身的屬性和方法。
至關於Java的包裝類;
1.toString()
1.to (10)
scala類型層級關係:
scala中全部的值都有類型,包括數值和函數.
圖片描述

scala 類型轉換:
圖片描述

val x: Long = 987654321
val y: Float = x  // 9.8765434E8 (note that some precision is lost in this case)

val face: Char = '☺'
val number: Int = face  // 9786

3.3. 操做符
Scala中沒有操做符,只是以操做符的格式去進行方法調用。
//數學運算符
+、-、* 、/、%
//關係操做符

< >= <= ! //邏輯操做符 && || //位操做符 | & ^ ~ //比較對象是否相等 == != 注意: 1.a + b 等價於 a.+(b) 1.Scala沒有++,-- 能夠用+=,-=代替 2.操做符都是方法的重載,是方法的調用
相關文章
相關標籤/搜索