1. 程式人生 > >Scala語法講解及練習

Scala語法講解及練習

 Scala基礎語法

1、 值和變數

A)宣告變數:

var修飾的欄位,是變數,內容和引用都可變

B)宣告:

val修飾的欄位,是常量,內容可變引用不可變

val修飾的欄位,相當於Javafinal修飾的變數

注意:在val和var均可的條件下,官方推薦使用val

  1. varvar區別演示

進入scala操作介面

演示var修飾的變數特點:

var修飾字段引用可變

 

總結:var修飾字段內容可變

演示val修飾的常量特點:

val修飾字段引用不可變

Val修飾字段內容可變

1、lazy關鍵字:

只有val修飾的變數才能被lazy修飾;

val被宣告為lazy時,它的初始化將被推遲,直到我們首次對它取值  

2. 常用型別

A)Scala和Java一樣,scala也是強型別語言

強型別語言一旦一個變數被指定了某個資料型別,如果不經過強制型別轉換,那麼它就永遠是這個資料型別。你不能把一個整形變數當成一個字串來處理。

弱型別語言:資料型別可以被忽略,一個變數可以賦不同資料型別的值。

  1. scala中所有的值都有型別

​​​​​​​

ScalaAnyVal型別(非引用資料型別)

七個

數值型別Byte、Char、Short、Int、Long、Float、Double

一個布林型別Boolean

一個Unit型別(等價與java中的void

ScalaAnyRef型別(引用資料型別)

   集合、option(選項型別)、YorClass(自己定義的類)

Scala中比較特殊的兩個型別:NothingNull(很少用到,要知道):

a、Nothing是所有類的子類(應用場景如下):

b、null是所有引用類的子類(應用場景如下):

注意:scala和Java不同的是,Scala沒有基本型別與包裝型別之分,這些型別都是類,有自己的屬性和方法。

  1. scala 型別轉換:

a、自動型別轉換

案例1:將Long轉Float型別

   val x: Long = 987654321

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

   案例2:將Char轉Int型別

   val face: Char = '☺'

   val number: Int = face  // 9786

 b、強制型別轉換

  案例1:將Long型別強制轉換成Byte

   var b:Long=a

   b.toByte

  案例2:將Long型別強制轉換成String

3. 操作符

A)Scala中沒有操作符,只是以操作符的格式去進行方法呼叫。

//數學運算子

+-* /%

//關係操作符

> < >= <= !=

//邏輯操作符

&& ||

//比較物件是否相等

==   =

注意:

1a + b 等價於 a.+(b) 因為符號也是scala中的方法

2Scala沒有++,-- 可以用+=,-=代替

3操作符都是方法的過載,.是方法的呼叫

B)、擴充套件:位運算子 (二進位制:0:false 1:true

1如果指定 A = 60; 及 B = -13; 兩個變數對應的二進位制為:

A = 0011 1100      <<2  1111 0000

B = 0000 1101      >>2  0000 0011

2、運算子、描述、例項

&   按位與運算子       (a & b) 輸出結果 12 ,二進位制解釋: 0000 1100

|     按位或運算子       (a | b) 輸出結果 61 ,二進位制解釋: 0011 1101

^    按位異或運算子    (a ^ b) 輸出結果 49 ,二進位制解釋: 0011 0001

    (參加運算的兩個物件,如果兩個相應位為“異”(值不同),則該位結果為1,否則為0)

~    按位取反運算子    (~a ) 輸出結果 -61 ,二進位制解釋: 1100 0011 在一個有符號二進位制數的補碼形式。

<<  左移動運算子       a << 2 輸出結果 240 ,二進位制解釋: 1111 0000

(將一個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0))

>>  右移動運算子     a >> 2 輸出結果 15 ,二進位制解釋: 0000 1111

(將一個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄)

>>>  無符號右移      A >>>2 輸出結果 15, 二進位制解釋: 0000 1111

(將一個數的各二進位制位全部右移若干位,左補0,右邊丟棄)

3、驗證結果使用win10計算器