Scala(1)-數據類型

Scala中所有的數據都有相應的類型,包括數值型數據和函數。下圖展示了一部分類型層次
這裏寫圖片描述

Scala 類型層次

Any 是所有類型的父類,相當於Java中的Object。Any 定義了一些通用的方法,比如 equals, hashCode, toString。 Any 有倆直接子類: AnyValAnyRef

AnyVal 表示“字面量”類型。Scala中有9種預定義的字面量類型並且它們是不爲NULL的,分別是:Double, Float, Long, Int, Short, Byte, Char, Unit, Boolean(是不是和Java中的包裝類很像?)。Unit 是一種數值類型,表示不包含任何有意義的信息。Unit只有一個實例,字面上可以用()來聲明。Scala規定所有的函數都必須返回一個值,因此在某些確實不需要返回的場合下,Unit就派上用場了。
Unit的聲明:

scala> var a = ();
a: Unit = ()

AnyRef 表示引用類型。 所有非值類型都被定義成引用類型。Scala中,每個用戶自定義的類型都是AnyRef 的子類。

類型轉換

數值類型可以通過下面的方式進行轉換:
這裏寫圖片描述

For example:

val x: Long = 987654321
val y: Float = x  // 9.8765434E8 (注意這裏會丟失一些精度)

val face: Char = '☺'
val number: Int = face  // 9786

類型轉換是單向的,下面的無法通過編譯:

val x: Long = 987654321
val y: Float = x  // 9.8765434E8
val z: Long = y  // 報錯!

Nothing和Null類型

Nothing 是所有類型的子類,處於Scala的類層級的最低端。沒有哪個數據的類型是Nothing 。那爲啥還會有這個類型呢?Nothing通常用來表示程序非正常終止,比如拋出異常、程序退出或無限循環。

Null 是所有引用類型的子類。它用字面量null來唯一表示。Null 通常是用來和其他JVM語言進行交互的,如果單獨在Scala中,基本不用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章