scala基本运算01

70 阅读3分钟

内容如下:

1. 算术运算符

2. 关系运算符

3. 逻辑运算符

4. 赋值运算符

(一)运算符概述

按照对数据操作的功能不同,我们可以把Scala运算符分为以下五大类。

· 算术运算符:只能用来做加、减、乘、除等算术运算。

· 关系运算符:用来对数值进行比较,比如>、<=、>=等。

· 逻辑运算符:包含逻辑与、逻辑或、逻辑非三种运算符,也是用于比较的。

· 位运算符:用于对二进制数的位进行左移、右移、取反等操作。

· 赋值运算符:用于将一个值进行赋值,例如=、+=、-=等。

 (二)算术运算符

Scala中算术运算的本质总结如下:

· +相当于调用对应类型的+方法

· -相当于调用对应类型的-方法

· 相当于调用对应类型的方法

· /相当于调用对应类型的/方法

· %相当于调用对应类型的%方法 %:计算余数。 5%2就是5除以2的余数, 5%2 = 1

// 算术运算符

// 数据类型。 7:Int
//          4:Int
//          7/4结果是Int
println(7/4)  // 7/4 = 1

println(7/4.0)  // 7/4 = 1

println(7%4) // 3
println(7-4) // 3
println(7+4) //11
println(7*4) //28

注意:7/4 = 1 , 7/4.0=1.75。原因是:

 (二)关系运算符

Scala中的算术运算符: + - * / %

关系运算符会得到Bool值。scala中的关系运算符如下:

== 等于 , != 不等于 , > 大于 , < 小于 , >= 大于等于 , <= 小于等于

// 关系运算符:> < == >= !=
// false true

val a:Boolean = 3 > 2

println(7==4) //false
println(7>4)  //true
println(7!=4) //true
println(7<4)  //false
println(7>=4) //true
println(7<=4) //false

(三)逻辑运算符

Scala中的逻辑运算跟Java中一样,也是与、或、非三种情况,具体如下。

· 与:()&& 运算表达式有一个为假,则整个表达式为假false。

· 或:|| 运算表达式有一个为真,则整个表达式为真true。

· 非:! 就是取反的意思,与参与表达式相反。

// 逻辑运算符:
/*
  &&(并且)  全部为true ===> true
  ||(或者)  有一个为true ===> true
  !(取反)
 */

// println(1>2 && 3>4)
// println(2>1 && 4>3)

// println(1>2 || 3>4 || 5>6) //false
// println(1>2 || 4>3) //true

println(!(1>2)) //true
(五)Scala的短路运算

短路运算的核心思想是:由&&或||这两个运算符构建出来的表达式,只会对整个运算结果有决定作用的部分进行求值。

Scala的短路运算法则:result=表达式1 运算符 表达式2

· 运算符为&&时:如果表达式1为false,则result=false,也就是说此时表达式1能够决定整个与运算的值,因此不会再去求表达式2的值。

· 运算符为||时:如果表达式1为true,则result=true,也就是说此时表达式1能够决定整个或运算的值,因此不会再去求表达式2的值。

(四)赋值运算符

= 简单的赋值运算,指定将右边操作数赋值给左边的操作数

+= 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数

-= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数

*= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数

/= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数

%= 求余后再赋值,将左右两边的操作数进行求余操作后再赋值给左边的操作数

[编码示例]

def main(args: Array[String]): Unit = {  
  // 赋值运算符  
  var a = 1 // 把右边的计算结果保存到左边的变量  
  a += 2 //  a+=2  等价于 a = a+2  
  println(a) //  
  a -= 1 // a-=1 等价于 a=a-1  
  println(a) //  
  a *= 3  
  println(a) //  
  a /= 4  
  println(a) //  
  a %= 5  
  println(a) //  
}  
printfln( a )