scala學習-基本數據類型和簡單操作5

1基本數據類型
只要是java的基本數據類型,Scala都支持。不過Scala中的數據類型都是對象,這些基本類型都可以通過隱式自動轉化的形式支持更多的方法。隱式自動轉換的概念簡單的就是,爲基本類型提供擴展,比如(引路蜂例子),調用(-1).abs(),-1是Int型,基本類型Int步支持abs方法的,那麼Scala就會把-1轉化成RichInt類型,然後調用RichInt類型的abs方法。
基本數據類型有:
Byte,Short,Int,Long,char,Double,Float,String.
除了String在java.long包保重,其他都在scala中,比如scala.Int。
在scala運行時,自動加載scala和java的數據類型,可以隨便使用。
以前也說過,由於scala支持類型推斷,不用顯示的指明數據類型,可以通過scala運行自動給出變量的類型。

//Byte,不要問問爲什麼byte不自動推斷,我不知道哈
  val p1:Byte=5
  //Int
  val p2 = 5
  //float
  val p3=5.11
  //char
  val p4='A'
  //String
  val p5="string"

還有要注意一點是,不是變量也可以調用方法,以前我們說過Scala把任何東西都看成對象。一般的數字或着值都可以調用方法。

 (-5).abs
 println((-5).abs)

這點和java不同。
2操作數據類型
Scala提供了很多運算符來操作基本數據類型,這些運算符,其實是方法的簡化,比如1+2,實際上爲(1).+(2),也就是1調用Int類型的名叫+的方法。Scala就是這麼任性。還提示我們

  println(1+2)
  println((1).+(2))

這裏寫圖片描述
實際上Int類型重載了很多方法,支持不同類型的方法。
在比如,String的方法indexof,可以使用方法的形式使用,也可以使用運算髮的方式使用。

 println("String".indexOf("t"))
  println("String" indexOf "t")

結果是一毛一樣的,第二個indexOf 其實就是當作運算符來使用的。所以說運算符其實就是一個方法的簡化。
剛纔說的+,是中綴運算髮,就是+兩步都是值的,也有前綴運算髮和後綴運算符。-6中的-就是前綴運算符,後綴就是我們剛剛說的 indexOf。Scala在實現前綴和後綴操作符的時候,方法的名稱都是以unary_開頭的。

println(-5)
println((5).unary_-)

這裏寫圖片描述
在Scala中你調用方法時可以省略空格號,如果你想調用該方法的沒有參數的方法時。比如下面:

 println( "afa".toLowerCase)
println( "afa" toLowerCase)

前綴操作符有:+,-,!和~
算法運算符:+-*/
關係:<,>,=,!等
如果需求比較兩個對象是否相等,可以使用==和!=操作符,這點和java中的==不同,scala中,只能比較兩個對象值是否相同。對於類型的比較使用eq和ne。
scala操作符優先級和java一樣,如果 困惑時,請使用()來改變優先級。scala中的操作符一般是左結合,但是以:結尾時,就是右結合。

發佈了26 篇原創文章 · 獲贊 20 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章