Scala中的基本类型 与操作符

来源:互联网 发布:java定义数组函数 编辑:程序博客网 时间:2024/06/05 23:03
基本类型和操作
========================
 
类型说明,与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  

0 0