scala基本数据类型和运算符
This commit is contained in:
parent
224379533e
commit
3a95e910c7
@ -1,4 +1,19 @@
|
||||
# Scala基本数据类型
|
||||
# Scala基本数据类型和运算符
|
||||
|
||||
<nav>
|
||||
<a href="#一数据类型">一、数据类型</a><br/>
|
||||
<a href="#二字面量">二、字面量</a><br/>
|
||||
<a href="#21-整数字面量">2.1 整数字面量</a><br/>
|
||||
<a href="#22-字符串字面量">2.2 字符串字面量</a><br/>
|
||||
<a href="#23-符号字面量">2.3 符号字面量</a><br/>
|
||||
<a href="#24-插值表达式">2.4 插值表达式</a><br/>
|
||||
<a href="#三运算符">三、运算符</a><br/>
|
||||
<a href="#31-运算符即方法">3.1 运算符即方法</a><br/>
|
||||
<a href="#32-运算符优先级">3.2 运算符优先级</a><br/>
|
||||
<a href="#33-逻辑运算符">3.3 逻辑运算符</a><br/>
|
||||
<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类中包含了多个重载的`+`方法,用于分别接收不同类型的参数。
|
||||
|
||||

|
||||
<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
|
BIN
pictures/scala-操作符优先级.png
Normal file
BIN
pictures/scala-操作符优先级.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
Loading…
x
Reference in New Issue
Block a user