1.變量的定義
var | val 變量名 [: 變量類型] = 變量值
2.注意事項(xiàng)
- 聲明變量時(shí),類型可以省略(就是叫 類型推斷)
- 類型確定后靠瞎,就不能修改,說明Scala 是強(qiáng)數(shù)據(jù)類型語言.
- 在聲明/定義一個(gè)變量時(shí),可以使用var 或者 val 來修飾志笼, var 修飾的變量可改變沿盅,val 修飾的變量不可改 [案例].(推薦使用val,線程安全,使用效率高)
- val修飾的變量在編譯后纫溃,等同于加上final
- var 修飾的對象引用可以改變腰涧,val 修飾的則不可改變,但對象的狀態(tài)(值)卻是可以改變的紊浩。(比如: 自定義對象窖铡、數(shù)組、集合等等
- 變量聲明時(shí)坊谁,需要初始值
var name: String = "smith"
var num1 = 100 //類型推斷
//num1 = "jack" 類型確定后就不能再修改
//var 是可以變的费彼。
var name = "小紅"
name = "小黑"
//val 是不可變的變量
val namel = "小白"
//namel = "小黃"
val (month, age, ticket) = (8, 20, 60.0) //可一次性定義多個(gè)變量
3.數(shù)據(jù)類型
image.png
- Any是所有類的根類型,即所有類的父類(基類)
- 在scala中類分為兩個(gè)大的類型分支(AnyVal [值類型,可以理解成java的基本數(shù)據(jù)類型], AnyRef類型)
- 在AnyVal 雖然叫值類型口芍,但是仍然是類(對象)
- 在scala中有兩個(gè)特別的類型(Null ), 還有一個(gè)是Nothing
- Null 類型只有一個(gè)實(shí)例 null, 他是bottom class ,是AnyRef的子類.
- Nothing 類型是所有類的子類箍铲, 它的價(jià)值是在于因?yàn)樗撬蓄惖淖宇悾涂梢詫othing類型的對象返回給任意的變量或者方法鬓椭,比如案例
def f1():Nothing= { //表示f1方法就是沒有正常的返回值颠猴,專門用于返回異常
throw new Exception("異常發(fā)生")
}- 在scala中仍然遵守 低精度的數(shù)據(jù)自動(dòng)的轉(zhuǎn)成 高精度的數(shù)據(jù)類型。
- 在scala中小染,Unit 類型比較特殊翘瓮,這個(gè)類型也只有一個(gè)實(shí)例 ()
- 強(qiáng)制類型轉(zhuǎn)換,自動(dòng)類型轉(zhuǎn)換的逆過程裤翩,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型资盅。使用時(shí)要加上強(qiáng)制轉(zhuǎn)函數(shù),但可能造成精度降低或溢出,格外要注意
val num = 2.22.toInt
println(num)//2