scala的基本运算

52 阅读2分钟

算数运算符

%:计算余数。

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) 
println(7-4) 
println(7+4) 
println(7*4)

注意:7/4 = 1,7/4.0=1.75

原因是:数据类型不一样。

关系运算符

关系运算符:用来对数值进行比较。

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

val a:Boolean = 3 > 2 

println(a) 
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中的运算符有三种:

与:&&(并且) 全部为true ===> true

或:||(或者) 有一个为true ===> true

非:!(取反)

举例1:

// 与:&&(并且) 全部为true ===> true 

println(1 > 2 && 3 > 4) //true 
println(2 > 1 && 4 > 3) //true
// 或:||(或者) 有一个为true ===> true 

println(1 > 2 || 3 > 4) // false 
println(1 > 2 || 4 > 3) // true
// 非:!(取反) 

println(!(1>2)) // true

举例2:判断闰年

println("请输入一个年份:") 
val year:Int = scala.io.StdIn.readInt() 

var result:Boolean =(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) 

if(result) {
    println(s"$year 是闰年") 
    } else {
    println(s"$year 不是闰年")
    }

赋值运算符

运算符:

  1. = 简单的赋值运算
  2. += 相加后再赋值
  3. -= 相减后再赋值
  4. *= 相乘后再赋值
  5. /= 相除后再赋值
  6. %= 求余后再赋值
var a = 10 // 把右边的计算结果保存到左边的变量 

a += 2 // 等价于 a = a+2 
println(a)

a -= 3 // 等价于 a = a-3
println(a) 
a *= 3 // 等价于 a = a*3 
println(a) 
a /= 4 // 等价于 a = a/4 
println(a) 
a %= 5 // 等价于 a = a%5 
println(a)

位运算

常用的位运算符如下:

1. & 按位与运算符。0&1 = 0,  1&0= 0 , 0&0 = 0, 1&1 = 1

2. | 按位或运算符。0|1 = 1,  1|0= 1 , 0|0 = 0, 1|1 = 1

3. ^ 按位异或运算符。0^1 = 1,  1^1= 0, 0^0 = 0

4. ~ 按位取反运算符

5. << 左移运算符。右边补零,放大。

6. >> 右移运算符。左边补零,缩小。

// 位运算 

println(5 & 4) // 4 
println(5 | 4) // 5 

println(4<<2) // 16 
println(4>>2) // 1

优先级

基本规则:

1. 乘(*)除(/)模(%) > 加(+)减(-)

2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)

3. && > ||

val result = 10 - 2 + 3 * 4 / 2 
println(result) // 问题1 

val a = true 
val b = false 
val c = false 
println(a || b && c) // 问题2

大数问题

一种整数都有自己的表达范围,一旦超过了这个范围就会报错,或者是导致计算异常

BigInt(数字字符串)来解决这个问题

var a =BigInt("11111111111111111111111")
var b =BigInt("11111111111111111111111")
var c = a * b
		
println(c)