Scala學習(一)基礎

1.聲明值和變量

val :以val定義的值是一個常量,後續沒法改變他的內容java

var:以var定義的值是一個變量數組

注意:在定義值或者變量時,你不須要給出制或者變量的類型,scala能夠推斷出來app

必要的時候,咱們能夠爲咱們的值或者變量指定類型dom

可是注意,這樣是不行的函數

注意:Scala中Any類型是全部類的超類。spa

注意:你可能注意到,在變量生命或者賦值以後,咱們並無使用分號。在scala中,僅當同一行代碼中存在多條語句時才須要使用分號。scala

你能夠將多個值或者變量放在一塊兒對象

2.經常使用類型

Scala中有7中數值類型:Byte、Char、Short、Int、Long、Float和Double以及Boolean。跟Java不一樣的是,這些都是類,Scala並不刻意區分基本類型和引用類型。Scala中經過String類表示字符串。字符串

------------------------------------編譯器

在Scala中咱們不須要包裝類型,在基本類型和包裝類型之間的轉換時Scala編譯器的工做。好比你建立一個Int數組,最終在虛擬機中獲得的是int[]數組。

------------------------------------

在Scala中,咱們用方法而不是強制類型轉換,來作數值類型之間的轉換。好比99.66.toInt獲得99,99.toChar獲得'c',和Java同樣toString將任意類型轉換爲字符串。

3.算數和操做符重載

Scala的算術操做符和Java中的預期是同樣的。

+ - * / %等操做符完成的是他們一般的工做,位操做符& | ^ >> <<也同樣。只是有一點特別:這些操做符其實都是方法。例如:

a + b  其實是 a.+(b)的簡寫,這裏+是方法名,Scala不會對使用非字母或數字作方法有限制。你能夠使用幾乎任何符號作方法。(Java中只容許兩個特殊字符的存在 _ 、$)

一般來講,你能夠用 a 方法 b 做爲一下代碼的簡寫:

a.方法(b)

這裏的方法是一個帶有兩個參數的方法(一個隱式參數和一個顯示參數)。例如1.to(10) 能夠寫成 1 to 10。

------------------------------------

和java以及C++相比,Scala並無提供++和--操做符,咱們須要使用+=或者-=1

4.調用函數和方法

Scala中提供了函數,相比Java,在Scala中使用數學函數更爲簡單,你不須要從某個類調用他的靜態方法。好比:

pow(2,4)

min(3,Pi)

這些數學韓式實在scala。math包中定義的。你能夠用 import math._ 來進行引入(在scala中,_字符是「通配符」,相似於Java中的*,而且使用scala.開頭的包時,咱們能夠省去scala前綴。例如import math._等同於import scala.math._)

------------------------------------

Scala沒有靜態方法,不過它有個相似的特性,叫作單例對象。而單例對象與某個類共享同一個名稱時,它就被稱爲是這個類的伴生對象,類和它的伴生對象必須定義在同一個源文件中。類被稱爲是這個單例對象的伴生類。類和它的伴生對象能夠互相訪問其私有成員。

一般一個類對應有一個伴生對象,其方法就跟Java中的靜態方法同樣。例如Scala中BigInt的伴生對象有一個生成指定位隨機素數的方法probablePrime:BigInt.probablePrime(100, scala.util.Random)

------------------------------------

不帶參數的Scala方法一般不使用圓括號。例如,StringOps類有一個distinct方法,不帶(),其做用是獲取字符串中不重複的字符。調用方法以下:「Hello」.distinct。通常來說,沒有參數且不改變當前對象的方法不帶圓括號。

 

5.apply方法

在Scala中,咱們一般都會使用相似函數調用的語法。例如,若是s是一個字符串,那麼s(i)就是該字符串的第i個字符。(在C++中你會寫s[i];在Java中你會寫s.charAt(i)),

在REPL中運行代碼:

這種用法的背後實現原理爲apply方法,也就是說上面的代碼是「Hello」.apply(4)的簡寫

相關文章
相關標籤/搜索