Scala中的基本類型 與操作符

基本類型和操作
========================
 
類型說明,與java一致
 
值類型 範圍   
Byte 8位有符號補碼整數(-27~27-1)   
Short 16位有符號補碼整數(-215~215-1)   
Int 32位有符號補碼整數(-231~231-1)   
Long 64位有符號補碼整數(-263~263-1)   
Char 16位無符號Unicode字符(0~216-1)   
String 字符序列   
Float 32位IEEE754單精度浮點數   
Double 64位IEEE754單精度浮點數   
Boolean true或false  


特殊字符:
 
文本 含義   
\n 換行(\u000A)   
\b 回退(\u0008)   
\t 製表符(\u0009)   
\f 換頁(\u000C)   
\r 回車(\u000D)   
\" 雙引號(\u0022)   
\' 單引號(\u0027)   
\\ 反斜槓(\u005C)  




=======================================


符號文本 
符號文本被寫成'<標識符>,這裏<標識符>可以是任何字母或數字的標識符。
如: var a = 'cymbal


============================================


操作符和方法


任何方法都可以是操作符 


與中綴操作符操作符帶後兩個操作數,一個在左一個在右相反,前綴和後綴操作符都是一元:unary的:它們僅帶一個操作數


可以當作前綴操作符用的標識符只有+,-,!和~


後綴操作符是不用點或括號調用的不帶任何參數的方法
Scala裏,你可以捨棄方法調用的空括號。例外就是如果方法帶有副作用就加上括號,如println(),不過如果方法沒有副作用就可以去掉括號,如String上調用的toLowerCase: 


================================


數學運算
你可以通過中綴操作符,加號(+),減號(-),乘號(*),除號(/)和餘數(%),在任何數類型上調用數學方法 , scala中的基礎運算與java一致
scala> 1.2 + 2.3 
res6: Double = 3.5 
scala> 3 - 1 
res7: Int = 2 
scala> 'b' - 'a' 
res8: Int = 1 
scala> 2L * 3L 
res9: Long = 6 
scala> 11 / 4 
res10: Int = 2 
scala> 11 % 4 
res11: Int = 3 
scala> 11.0f / 4.0f 
res12: Float = 2.75 
scala> 11.0 % 4.0 
res13: Double = 3.0


========================================
關係和邏輯操作
你可以用關係方法:大於(>),小於(<),大於等於(>=)和小於等於(<=)比較數類型,像等號操作符那樣,產生一個Boolean結果。另外,你可以使用一元操作符!(unary_!方法)改變Boolean值
scala> 1 > 2 
res16: Boolean = false 
scala> 1 < 2 
res17: Boolean = true 
scala> 1.0 <= 1.0 
res18: Boolean = true 
scala> 3.5f >= 3.6f 
res19: Boolean = false 
scala> 'a' >= 'A' 
res20: Boolean = true 
scala> val thisIsBoring = !true 
thisIsBoring: Boolean = false 
scala> !thisIsBoring
res21: Boolean = true


scala> val toBe = true 
toBe: Boolean = true 
scala> val question = toBe || !toBe 
question: Boolean = true 
scala> val paradox = toBe && !toBe 
paradox: Boolean = false 



===================================


對象相等性
scala> List(1, 2, 3) == List(1, 2, 3) 
res27: Boolean = true 
scala> List(1, 2, 3) == List(4, 5, 6) 
res28: Boolean = false
scala> List(1, 2, 3) == null 
res31: Boolean = false 
scala> null == List(1, 2, 3) 
res32: Boolean = false 
===== ===== ==== 
scala> ("he" + "llo") == "hello" 
res33: Boolean = true 
=== 比較2個不同的對象
scala> 1 == 1.0 
res29: Boolean = true 


基本類型只能用==,!=, >,< 進行比較, 但是引用類型是用eq,ne,== , !=進行比較:


Scala的==與Java的有何差別 Java裏的既可以比較原始類型也可以比較參考類型。對於原始類型,Java的==比較值的相等性,如Scala。然而對於參考類型,Java的==比較了參考相等性:reference equality,也就是說這兩個變量是否都指向於JVM堆裏的同一個對象。Scala也提供了這種機制,名字是eq。不過,eq和它的反義詞,ne,僅僅應用於可以直接映射到Java的對象。


========================================
scala中的優先級和關聯性。
 
 
(所有其他的特殊字符)   
* / %   
+ -   
:   
= !   
< >   
&   
^   
|  




======================================
富包裝器 


8 到目前爲止,你應該能指出給出的這段代碼,Scala編譯器會調用成(bills.!*&^%~(code)).!()。 
表格5.4 一些富操作 
 
代碼 結果   
0 max 5 5   
0 min 5 0   
-2.7 abs 2.7   
-2.7 round -3L   
1.5 isInfinity false   
(1.0 / 0) isInfinity true   
4 to 6 Range(4, 5, 6)   
"bob" capitalize "Bob"   
"robert" drop 2 "bert"  


富包裝類 
 
基本類型 富包裝   
Byte scala.runtime.RichByte   
Short scala.runtime.RichShort   
Int scala.runtime.RichInt   
Long scala.runtime.RichLong   
Char scala.runtime.RichChar   
String scala.runtime.RichString   
Float scala.runtime.RichFloat   
Double scala.runtime.RichDouble   
Boolean scala.runtime.RichBoolean  

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