Scala中的基本类型 与操作符

本文介绍了Scala中的基本数据类型及其范围,并详细解释了数值运算、关系与逻辑操作、对象相等性的判断方法。此外,还涵盖了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  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值