Scala學習之數據類型和變量

scala變量修飾符

val:修飾的是不可變的變量,不可以重新賦值的-->值

var:修飾可變變量,可以重新賦值的 --> 變量

Java中修飾常量要用final,如果沒有final的話一般都是可變的

注:scala建議全部定義為val的,除非你是業務需求,才允許把他定義成var

我們新創建一個Object

下面是var的演示

Scala學習之數據類型和變量

下面是val的演示

Scala學習之數據類型和變量

我們修改b的值

編譯器會有錯誤提示

Scala學習之數據類型和變量

可以看到錯誤信息

Scala學習之數據類型和變量

這需要知道一個概念:變量類型推斷

Scala學習之數據類型和變量

myVar 會被推斷為 Int 類型,myVal 會被推斷為 String 類型

上面是scala自動推斷的類型,我們並不知道是那種數據類型,如果要聲明數據類型呢?

val or var VariableName: DataType [=Initial Value or Expression]

val or var VariableName: DataType的意思是變量聲明

Scala學習之數據類型和變量

[=Initial Value or Expression or _]三種初始化形式

Initial Value

Scala學習之數據類型和變量

Expression

Scala中表達式的返回值就是最後一行代碼的執行結果


Scala學習之數據類型和變量

下面是Scala 支持的數據類型

Scala學習之數據類型和變量

相對於Java

並無基本類型與包裝類型之分

整數類型

Scala的整數類型用於存放整數值,比如 5、18、96、167等等,根據長度不同整數類型又劃分出四種類型:

Scala學習之數據類型和變量

Scala各整數類型有固定的表示範圍和字段長度,不受具體操作系統的影響,以保證Scala程序的可移植性。


在程序中定義一個整型變量,如果沒有指定,默認為Int類型,如果要定義Long類型,需要在後面加上“l”或者“L”,推薦用“L”。

Scala學習之數據類型和變量

最大值的獲取方式:

這裡有一種加s的輸出方式

print(s"$a")輸出為變量的值

println()打印時自動換行

Scala學習之數據類型和變量

如果定義一個整數超過了Int類型最大值,而不在後面加上“L”,編譯會報錯,這時需要加上“L”

Scala學習之數據類型和變量

浮點類型

Scala的浮點類型可以表示一個小數,比如 3.14f、7.8 、0.168等等,根據長度不同浮點類型又劃分出兩種類型:

Scala學習之數據類型和變量

與整數類型類似,Scala 浮點類型也有固定的表數範圍和字段長度,不受具體操作系統的影響。Scala的浮點型常量默認為Double型,聲明Float型常量,須後加“f”或“F”。通常情況下,應該使用Double型,因為它比Float型更精確(小數點後大致7位)

Scala學習之數據類型和變量

字符類型

字符類型可以表示單個字符,字符類型是Char,16位無符號Unicode字符(2個字節), 區間值為 U+0000 到 U+FFFF。

Scala學習之數據類型和變量

字符常量是用單引號(' ')括起來的單個字符,可以直接給Char賦一個整數,然後輸出時,會按照對應的unicode碼。

Scala學習之數據類型和變量

也可以輸出unicode

Scala學習之數據類型和變量

在Scala中允許使用轉義字符''來將其後的字符轉變為特殊字符型常量;

Scala學習之數據類型和變量

布爾類型

布爾類型也叫Boolean類型,在Scala中,Boolean類型數據只允許取值true和false,佔1個字節。

Scala學習之數據類型和變量

Boolean類型在程序中的作用一般是和邏輯運算結合在一起。

Scala學習之數據類型和變量

String字符串類型

Scala本身沒有String類,它的字符串的類型實際上是java.lang.String,因此和Java中的一樣,String是一個不可變的對象,所以該對象不可被修改。這就意味著你如果修改字符串就會產生一個新的字符串對象。

Scala學習之數據類型和變量

可以去除豎線

Scala學習之數據類型和變量

Unit類型、Null類型和Nothing類型

Scala學習之數據類型和變量

Unit類型用來標識過程,也就是沒有明確返回值的函數,由此可見,Unit類似於Java裡的void。Unit只有一個實例:(),這個實例也沒有實質的意義。

Scala學習之數據類型和變量

Null類只有一個實例對象:null,類似於Java中的null引用。null可以賦值給任意引用類型(AnyRef),但是不能賦值給值類型(AnyVal: 比如 Int, Float,Char, Boolean,Long,Double,Byte,Short)。

Scala學習之數據類型和變量

Nothing,可以作為沒有正常返回值的方法的返回類型,非常直觀的告訴你這個方法不會正常返回,而且由於Nothing是其他任意類型的子類,在開發中可以將Nothing返回給任意變量或函數,在拋出異常方面應用較多。

Scala學習之數據類型和變量


分享到:


相關文章: