Scala 基本數(shù)據(jù)類(lèi)型

2018-09-28 18:15 更新

基本數(shù)據(jù)類(lèi)型

本篇介紹 Scala 支持的基本數(shù)據(jù)類(lèi)型,如果你是個(gè) Java 程序員,你會(huì)發(fā)現(xiàn) Java 支持的基本數(shù)據(jù)類(lèi)型,Scala 都有對(duì)應(yīng)的支持,不過(guò) Scala 的數(shù)據(jù)類(lèi)型都是對(duì)象(比如整數(shù)),這些基本類(lèi)型都可以通過(guò)隱式自動(dòng)轉(zhuǎn)換的形式支持比 Java 基本數(shù)據(jù)類(lèi)型更多的方法。隱式自動(dòng)轉(zhuǎn)換的概念將在后面介紹,簡(jiǎn)單的說(shuō)就是可以為基本類(lèi)型提供擴(kuò)展,比如如果調(diào)用 (-1).abs() ,Scala 發(fā)現(xiàn)基本類(lèi)型 Int 沒(méi)有提供 abs()方法,但可以發(fā)現(xiàn)系統(tǒng)提供了從 Int 類(lèi)型轉(zhuǎn)換為 RichInt 的隱式自動(dòng)轉(zhuǎn)換,而 RichInt 具有 abs 方法,那么 Scala 就自動(dòng)將 1 轉(zhuǎn)換為 RichInt 類(lèi)型,然后調(diào)用 RichInt 的 abs 方法。

Scala 的基本數(shù)據(jù)類(lèi)型有: Byte,Short,Int,Long 和 Char (這些成為整數(shù)類(lèi)型)。整數(shù)類(lèi)型加上 Float 和 Double 成為數(shù)值類(lèi)型。此外還有 String 類(lèi)型,除 String 類(lèi)型在 java.lang 包中定義,其它的類(lèi)型都定義在包 scala 中。比如 Int 的全名為 scala.Int。實(shí)際上 Scala 運(yùn)行環(huán)境自動(dòng)會(huì)載入包 scala 和 java.lang 中定義的數(shù)據(jù)類(lèi)型,你可以使用直接使用 Int,Short,String 而無(wú)需再引入包或是使用全稱(chēng)。

下面的例子給出了這些基本數(shù)據(jù)類(lèi)型的字面量用法,由于 Scala 支持?jǐn)?shù)據(jù)類(lèi)型推斷,你在定義變量時(shí)多數(shù)可以不指明數(shù)據(jù)類(lèi)型,而是由 Scala 運(yùn)行環(huán)境自動(dòng)給出變量的數(shù)據(jù)類(lèi)型:

Welcome to Scala version 2.11.0-M5 (OpenJDK 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.
scala> var hex=0x5
hex: Int = 5
scala> var hex2=0x00ff
hex2: Int = 255
scala> val prog=0xcafebabel
prog: Long = 3405691582
scala> val littler:Byte= 38
littler: Byte = 38
scala> val big=1.23232
big: Double = 1.23232
scala> val a='A'
a: Char = A
scala> val f ='\u0041'
f: Char = A
scala> val hello="hello"
hello: String = hello
scala> val longString=""" Welcome to Ultamix 3000. Type "Help" for help."""
longString: String = " Welcome to Ultamix 3000. Type "Help" for help."
scala> val bool=true
bool: Boolean = true  
scala>  

Scala的基本數(shù)據(jù)類(lèi)型的字面量也支持方法(這點(diǎn)和 Java 不同,Scala 中所有的數(shù)值字面量也是對(duì)象),比如:

scala> (-2.7).abs
res3: Double = 2.7
scala> -2.7 abs
warning: there were 1 feature warning(s); re-run with -feature for details
res4: Double = 2.7
scala> 0 max 5
res5: Int = 5
scala> 4 to 6
res6: scala.collection.immutable.Range.Inclusive = Range(4, 5, 6)  

這些方法其實(shí)是對(duì)于數(shù)據(jù)類(lèi)型的 Rich 類(lèi)型的方法,Rich 類(lèi)型將在后面再做詳細(xì)介紹。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)