scala基本数据类型和运算符

This commit is contained in:
罗祥 2019-05-06 09:51:42 +08:00
parent 224379533e
commit 3a95e910c7
2 changed files with 64 additions and 5 deletions

View File

@ -1,4 +1,19 @@
# Scala基本数据类型
# Scala基本数据类型和运算符
<nav>
<a href="#一数据类型">一、数据类型</a><br/>
<a href="#二字面量">二、字面量</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#21-整数字面量">2.1 整数字面量</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#22-字符串字面量">2.2 字符串字面量</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#23-符号字面量">2.3 符号字面量</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#24-插值表达式">2.4 插值表达式</a><br/>
<a href="#三运算符">三、运算符</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#31-运算符即方法">3.1 运算符即方法</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#32-运算符优先级">3.2 运算符优先级</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#33-逻辑运算符">3.3 逻辑运算符</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#34-对象相等性">3.4 对象相等性</a><br/>
</nav>
## 一、数据类型
@ -23,7 +38,7 @@ Scala 拥有下表所示的数据类型其中Byte、Short、Int、Long和Char
## 二、字面量
Scala和Java字面量在使用上很多相似比如都使用F或f表示浮点型都使用L或l表示Long类型。下文主要介绍两者差异部分。
Scala和Java字面量在使用上很多相似比如都使用F或f表示浮点型都使用L或l表示Long类型。下文主要介绍两者差异部分。
```scala
scala> 1.2
@ -134,11 +149,11 @@ Scala和其他语言一样支持大多数的操作运算符
- 位运算符(~&|^<<>>>>>)
- 赋值运算符(=+=-=*=/=%=<<=>>=&=^=|=)
以上操作符的基本使用与其他语言类似,以下主要介绍差异部分和注意事项。
以上操作符的基本使用与Java类似下文主要介绍差异部分和注意事项。
### 3.1 运算符即方法
Scala的面向对象比Java更加纯粹在Scala中一切都是对象。对于`1+2`,实际上是调用了Int类中名为`+`的方法所以1+2,也可以写成`1.+(2)`
Scala的面向对象比Java更加纯粹在Scala中一切都是对象。所以对于`1+2`,实际上是调用了Int类中名为`+`的方法所以1+2,也可以写成`1.+(2)`
```scala
scala> 1+2
@ -150,7 +165,51 @@ res15: Int = 3
Int类中包含了多个重载的`+`方法,用于分别接收不同类型的参数。
![scala-int+](D:\BigData-Notes\pictures\scala-int+.png)
<div align="center"> <img width='700px' src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/scala-int+.png"/> </div>
### 3.2 运算符优先级
操作符的优先级如下:优先级由上至下,逐级递减。
<div align="center"> <img width='700px' src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/scala-操作符优先级.png"/> </div>
在表格中某个字符的优先级越高,那么以这个字符打头的方法就拥有更高的优先级。如`+`的优先级大于`<`,也就意味则`+`的优先级大于以`<`开头的`<<`,所以`2<<2+2` , 实际上等价于`2<<(2+2)` :
```scala
scala> 2<<2+2
res0: Int = 32
scala> 2<<(2+2)
res1: Int = 32
```
### 3.3 逻辑运算符
和其他语言一样在Scala中&&||的执行是短路的,即如果左边的表达式能确定整个结果,右边的表达式就不会被执行,这满足大多数使用场景。但是如果你需要在无论什么情况下,都执行右边的表达式,则可以使用&或|代替。
### 3.4 对象相等性
如果想要判断两个对象是否相等,可以使用`==``!=`,这两个操作符可以用于所有的对象包括null。
```scala
scala> 1==2
res2: Boolean = false
scala> List(1,2,3)==List(1,2,3)
res3: Boolean = true
scala> 1==1.0
res4: Boolean = true
scala> List(1,2,3)==null
res5: Boolean = false
scala> null==null
res6: Boolean = true
```
## 参考资料
1. Martin Odersky(著),高宇翔(译) . Scala编程(第3版)[M] . 电子工业出版社 . 2018-1-1

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB