在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ Scala運算符
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達式
Scala循環(huán)語句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實現(xiàn)
Scala異常處理
Scala類和對象
Scala數(shù)據(jù)類型
Scala單例和伴生對象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語句
Scala基礎(chǔ)語法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問修辭符
Scala this關(guān)鍵字

Scala運算符

在Scala語言中,運算符是一個符號,告訴編譯器執(zhí)行特定的數(shù)學或邏輯函數(shù)。Scala語言提供豐富的內(nèi)置運算符,并提供以下類型的運算符 -

  • 算術(shù)運算符
  • 關(guān)系運算符
  • 邏輯運算符
  • 按位運算符
  • 賦值運算符
  • 其它運算符

在本章中,我們將學習每個運算符的工作方式。

1.算術(shù)運算符

下表顯示了Scala支持的所有算術(shù)運算符。假設(shè)變量A的值是10,變量B的值是20,那么 -

運算符 描述 示例
+ 將兩個操作數(shù)相加 A + B = 30
- 從第一個操作數(shù)減去第二個操作數(shù) A ? B = -10
* 將兩個操作數(shù)相乘 A * B = 200
/ 將第一個操作數(shù)除以第二個操作數(shù)
% 模數(shù)運算符和整數(shù)除法后的余數(shù)。 B % A = 0
++ 遞增運算符將整數(shù)值增加1。 A++ = 11
-- 遞減運算符將整數(shù)值減1。 A-- = 9

創(chuàng)建一個源代碼文件:Demo.scala,如下代碼 -

object Demo {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      var c = 25;
      var d = 25;

      println("a + b = " + (a + b) );
      println("a - b = " + (a - b) );
      println("a * b = " + (a * b) );
      println("b / a = " + (b / a) );
      println("b % a = " + (b % a) );
      println("c % a = " + (c % a) );
   }
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5

2.關(guān)系運算符

下表顯示了Scala語言支持的關(guān)系運算符。假設(shè)變量A=10,變量B=20,則 -

運算符 描述 示例
== 檢查兩個操作數(shù)的值是否相等。 如果相等,則條件成立。 (A == B)結(jié)果為false
!= 檢查兩個操作數(shù)的值是否相等。 如果值不相等,則條件成立。 (A != B) 結(jié)果為true
> 檢查左操作數(shù)的值是否大于右操作數(shù)的值。 如果是,則條件成立。 (A > B) 結(jié)果為false
< 檢查左操作數(shù)的值是否小于右操作數(shù)的值。 如果是,則條件成立。 (A < B)結(jié)果為true
>= 檢查左操作數(shù)的值是否大于等于右操作數(shù)的值。 如果是,則條件成立。 (A >= B) 結(jié)果為false
<= 檢查左操作數(shù)的值是否小于等于右操作數(shù)的值。 如果是,則條件成立。 (A <= B)結(jié)果為true

創(chuàng)建一個源代碼文件:Demo.scala,如下代碼 -

object Demo {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;

      println("a == b = " + (a == b) );
      println("a != b = " + (a != b) );
      println("a > b = " + (a > b) );
      println("a < b = " + (a < b) );
      println("b >= a = " + (b >= a) );
      println("b <= a = " + (b <= a) );
   }
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

3.邏輯運算符

下表顯示了Scala支持的所有邏輯運算符。 假設(shè)變量A=1,變量B=0,則 -

運算符 描述 示例
&& 邏輯與運算符。 如果兩個操作數(shù)都不為零,則條件成立。 (A && B)結(jié)果為false
稱為邏輯或運算符。如果兩個操作數(shù)中的任何一個非零,則條件成立。 (A B)結(jié)果為true
! 稱為邏輯非運算符,它用于反轉(zhuǎn)其操作數(shù)的邏輯狀態(tài)。如果條件為真,則邏輯NOT運算符將使其結(jié)果為false

示例:創(chuàng)建一個源文件:Demo.scala,代碼如下 -

object Demo {
   def main(args: Array[String]) {
      var a = true;
      var b = false;

      println("a && b = " + (a&&b) );

      println("a || b = " + (a||b) );

      println("!(a && b) = " + !(a && b) );
   }
}

執(zhí)行上面代碼,得到以下結(jié)果 -

a && b = false
a || b = true
!(a && b) = true

4.按位運算符

按位運算符對位進行操作,并執(zhí)行逐位運算。 |^的真值表如下 -

p q p & q p/q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假設(shè)A = 60,B = 13,二進制格式如下:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表列出了Scala支持的按位運算符。假設(shè)變量A=60,變量B=13,則 -

運算符 描述 示例
& 如果二進制AND運算符存在于兩個操作數(shù)中,則二進制AND運算符將對結(jié)果復制一位。 (A&B)= 12,即0000 1100
二進制OR運算符如果存在于任一操作數(shù)中,則復制一位。 (A B) = 61, 即 0011 1101
^ 二進制XOR操作符復制該位,如果它設(shè)置在一個操作數(shù)中,而不是兩者。 (A ^ B) = 49, 即, 0011 0001
~ 二進制補碼運算符是一元的,具有“翻轉(zhuǎn)”位的作用。 (~A)= -61,即 1100 0011的補碼形式。
<< 二進制左移操作符,左操作數(shù)值左移由右操作數(shù)指定的位數(shù)。 A << 2 = 240 即, 1111 0000
>> 二進制右移操作符,左操作數(shù)值被右操作數(shù)指定的位移動。 A >> 2 = 15 即,0000 1111

示例: 創(chuàng)建一個源代碼文件:Demo.scala,代碼如下所示 -

object Demo {
   def main(args: Array[String]) {
      var a = 60;           /* 60 = 0011 1100 */  
      var b = 13;           /* 13 = 0000 1101 */
      var c = 0;

      c = a & b;            /* 12 = 0000 1100 */ 
      println("a & b = " + c );

      c = a | b;            /* 61 = 0011 1101 */
      println("a | b = " + c );

      c = a ^ b;            /* 49 = 0011 0001 */
      println("a ^ b = " + c );

      c = ~a;               /* -61 = 1100 0011 */
      println("~a = " + c );

      c = a << 2;           /* 240 = 1111 0000 */
      println("a << 2 = " + c );

      c = a >> 2;           /* 215 = 1111 */
      println("a >> 2  = " + c );

      c = a >>> 2;          /* 215 = 0000 1111 */
      println("a >>> 2 = " + c );
   }
}

執(zhí)行上面代碼,得到以下結(jié)果 -

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15

5.賦值運算符

下表列出了Scala語言支持的賦值運算符 -

運算符 描述 示例
= 簡單賦值運算符,將右側(cè)操作數(shù)的值分配給左側(cè)操作數(shù) C = A + B,將A + B的值分配給C
+= 相加與賦值運算符。它將右操作數(shù)添加到左操作數(shù),并將結(jié)果分配給左操作數(shù)。 C + = A等價于C = C + A
-= 相減與賦值運算符。它從左操作數(shù)中減去右操作數(shù),并將結(jié)果分配給左操作數(shù)。 C -= A等價于 C = C - A
*= 乘以與賦值運算符。它將右操作數(shù)與左操作數(shù)相乘,并將結(jié)果分配給左操作數(shù)。 C * = A等價于C = C * A
/= 除以與賦值運算符。它將左操作數(shù)與右操作數(shù)分開,并將結(jié)果分配給左操作數(shù)。 C /= A等價于C = C / A
%= 模數(shù)與賦值運算符。它需要使用兩個操作數(shù)的模數(shù),并將結(jié)果分配給左操作數(shù)。 C %= A等價于C = C % A
<<= 左移與賦值運算符 C <<= 2等價于C = C << 2
>>= 右移與賦值運算符 C >> = 2等價于C = C >> 2
&= 按位與賦值運算符 C &= 2等價于C = C & 2
^= 按位異或運算符和賦值運算符。 C ^= 2等價于C = C ^ 2
按位包含OR和賦值運算符。

示例: 創(chuàng)建一個源文件:Demo.scala ,其代碼如下 -

object Demo {
   def main(args: Array[String]) {
      var a = 10;    
      var b = 20;
      var c = 0;

      c = a + b;
      println("c = a + b  = " + c );

      c += a ;
      println("c += a  = " + c );

      c -= a ;
      println("c -= a = " + c );

      c *= a ;
      println("c *= a = " + c );

      a = 10;
      c = 15;
      c /= a ;
      println("c /= a  = " + c );

      a = 10;
      c = 15;
      c %= a ;
      println("c %= a  = " + c );

      c <<= 2 ;
      println("c <<= 2  = " + c );

      c >>= 2 ;
      println("c >>= 2  = " + c );

      c >>= 2 ;
      println("c >>= 2  = " + c );

      c &= a ;
      println("c &= a  = " + c );

      c ^= a ;
      println("c ^= a  = " + c );

      c |= a ;
      println("c |= a  = " + c );
   }
}

執(zhí)行上面代碼,得到以下結(jié)果 -

c = a + b  = 30
c += a  = 40
c -= a  = 30
c *= a  = 300
c /= a  = 1
c %= a  = 5
c <<= 2  = 20
c >>= 2  = 5
c >>= 2  = 1
c &= a  = 0
c ^= a  = 10
c |= a  = 10

6.運算符優(yōu)先級

運算符優(yōu)先級決定表達式中術(shù)語的分組,并決定如何評估計算表達式。 某些運算符的優(yōu)先級高于其他運營商; 例如,乘法運算符的優(yōu)先級高于加法運算符,則先要執(zhí)行乘法運算符的運算。

讓我們通過下面的例子了解優(yōu)先級:

int value = 10 + 20 * 10;

value變量計算結(jié)果為:210,因為*(乘法運算符)的優(yōu)先級比+(加法運算符)高,所以在+(加法運算符)之前進行求值。

C語言運算符的優(yōu)先級和關(guān)聯(lián)性如下:

分類 運算符 關(guān)聯(lián)性
后綴 () [] -> . ++ - - 左到右
一元 + - ! ~ ++ - - (type)* & sizeof 右到左
乘法 * / % 左到右
加法 + - 左到右
位移 << >> 左到右
關(guān)系 < <= > >= 左到右
等于 == != 左到右
按位與 & 左到右
位異或 ^ 左到右
按位或 / 左到右
邏輯與 && 左到右
邏輯或 // 左到右
條件 ?: 右到左
賦值 = += -= *= /= %=>>= <<= &= ^= /= 右到左
逗號 , 左到右

上一篇:Scala數(shù)組下一篇:Scala函數(shù)