變量是只不過是保留內存位置來存儲值。這意味着,當創建一個變量,會在內存中保留一些空間。
基於變量的數據類型,所述編譯器分配存儲器,並決定什么可以被存儲在保留存儲器。因此,通過分配不同的數據類型的變量,可以存儲整數,小數,或字符在這些變量。
變量聲明
Scala有兩種變量,val和var。val類似於Java里的final變量。一旦初始化了,val就不能再被賦值。相反,var如同Java里面的非final變量,可以在它的生命周期中被多次賦值。
即,常量或變量。
下面是使用var關鍵字來定義一個變量的語法:
scala> var myVar : String = "Foo" myVar: String = Foo scala>
在這里,myVar使用關鍵字var聲明。這意味着它是一個可以改變值的變量,被稱為可變變量。下面是使用val關鍵字來定義變量的語法:
scala> val msg = "hello world" msg: String = hello world scala>
這里,myVal是使用關鍵字val聲明。這意味着,它是不能改變的變量,這是所謂的不可變變量。
scala> var myVar : String = "Foo" myVar: String = Foo scala> scala> myVar = "duan" myVar: String = duan scala> val msg = "hello world" msg: String = hello world scala> msg = "duan" <console>:12: error: reassignment to val msg = "duan" ^ scala>
變量數據類型:
變量類型在變量名后面指定,前在equals之前簽署。可以通過它的數據類型定義任何類型的Scala變量如下:
val or val VariableName : DataType [= Initial Value]
如果不指定任何初始值變量,那么如下所示它是有效的:
var myVar :Int; val myVal :String;
變量類型推斷:
當分配一個初始值給一個變量,Scala編譯器可以計算出根據分配給它的值的變量類型。這就是所謂的變量類型推斷。因此,可以寫這些變量的聲明如下這樣:
var myVar = 10; val myVal = "Hello, Scala!";
在這里,默認情況下,myVar是int類型,將設為myVal為字符串類型變量。
多重任務:
Scala支持多任務。如果一個代碼塊或方法返回一個元組,該元組可被分配給一個val變量。 [注:元組在以后的章節中學習。]
val (myVar1: Int, myVar2: String) = Pair(40, "Foo")
類型推斷得到正確類型:
val (myVar1, myVar2) = Pair(40, "Foo")
變量類型:
Scala變量可以有三種不同的范圍,這取決於它們正在使用的地方。它們可以存在於字段,方法參數和局部變量。下面是關於每種類型的適用范圍的詳細信息:
字段:
字段是屬於一個對象的變量。該字段是從對象中的所有方法中訪問。字段也可以是具體取決於訪問修飾符字段與聲明的對象外訪問。對象字段既可以是可變的或不可變的類型,可以使用var 或 val兩種定義。
方法參數:
方法的參數是變量,其用於傳遞方法內的值在方法被調用時。方法參數被從方法唯一傳入,但傳遞的對象可從外面,如果從外面的方法有一個引用對象。方法參數始終是可變的並由val關鍵字定義。
局部變量:
局部變量是在方法內聲明的變量。局部變量只能在方法中訪問,但可以訪問創建方法的對象(如果從方法中返回它們)。局部變量既可以是可變的或不可變的類型,可以使用var或val兩個關鍵字定義。