scala基本数据类型和运算符
This commit is contained in:
		| @@ -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 | 
		Reference in New Issue
	
	Block a user