(一)Scala的位运算符
常用的位运算符如下:
- '&' 按位与运算符。0&1 = 0, 1&0= 0 , 0&0 = 0, 1&1 = 1
- '|' 按位或运算符。0|1 = 1, 1|0= 1 , 0|0 = 0, 1|1 = 1
- '^' 按位异或运算符。0^1 = 1, 1^1= 0, 0^0 = 0
- '~' 按位取反运算符
- '<<' 左移运算符。右边补零,放大。
- '>>' 右移运算符。左边补零,缩小。
object Base09 {
def main(args: Array[String]): Unit = {
// 位运算:把10进制的数转成2进制表示,其中的某个数字
/**
* 10进制 2进制
* 0 0
* 1 1
* 2 10
* 3 11
* 4 100
* 5 101
* 6 110
* ----------------------
* & 按位与运算符。0&1 = 0, 1&0 = 0, 0&0 = 0. 1&1 = 1
* 6&2 =
* 4&5----> 4
* 4 -> 1 0 0
* 5 -> 1 0 1
* &---------------
* 1 0 0 (4)
*
* | 按位或运算符。0|1 = 1,1|0 =1,0|0 = 0,1|1 = 1
* 4/5 ----> 5
* 4 -> 1 0 0
* 5 -> 1 0 1
* |-------------------
* 1 0 1 (5)
*/
println(s=s"4|5=${ 4|5 }")
}
}
(二)Scala中运算符的优先级
基本规则:
-
乘(*)除(/)模(%) > 加(+)减(-)
-
算术(+-*/) > 关系(><>=!=) > 赋值(=)
-
&& > ||
- 例如
object Base10 {
def main(args: Array[String]): Unit = {
val a = true
val b = false
val c = false
/** &&的优先级要高于 || */
println(a || b && c) // 结果为true
}
}
(三)Scala的相等性
在Scala中,有两种方式:
-
== 比较的对象只有数值,只要==两边的值相等,就返回true。
-
eq 引用比较
(四)Scala中的自增和自减运算+浮点数精度问题
-
++:用赋值运算符 +=1代替++。
-
--:用赋值运算符 -=1代替--。
object Base11 {
def main(args: Array[String]): Unit = {
val a = 0.1
val b = 0.2
val c = 0.3
// println(a + b == c)
println(1 + 2 == 3) //true
println(0.1 + 0.2 == 0.3) //false
println(BigDecimal(0.1) + BigDecimal(0.2) == BigDecimal(0.3) )
println(0.1 + 0.1 == 0.2) //true
}
}
(六)大数问题
例如
object Base12 {
def main(args: Array[String]): Unit = {
val a = 2147483647
val b = 1
// val c = (a + b) / 2 //Bug
val c = a - (a - b)/2 // 高手计算平均数
println(c)
// 大数字计算
// 1111111111111 * 2222222222221
// val c:Double = 111111111111111111111111f * 11111111111111111111111111111111111111111111
// val d = BigInt("11111111111111111111111111111111111111") * BigInt("11111111111111111111111111111111111111")
// println(c)
// println(d)
}
}
内建控制-if语句
(一)if语句的格式和执行流程
注意
-
单分支。 if(){}
-
双分支 if(){} else {}
-
多分支 if(){} else if(){} else if(){} else {}
(二)案例一判断是否成年
编写程序实现:提示用户输入年龄,判断是否成年。
object Base13 {
def main(args: Array[String]): Unit = {
// 1.获取用户输入的数字
// 2.判断
// 3.输出结果
print("请输入年龄:")
val age = scala.io.StdIn.readInt()
if (age >= 18 ){
println("成年")
}else {
println("未成年")
}
}
}
(三)案例二比较正方形和长方形面积大小
输入一个正方形的边长(a)及一个长方形的长与宽(b、c),然后比较两个图形的面积。如果长方形面积大,输出 “RECTANGLE”;如果正方形面积大,输出 “SQUARE”,如果一样大,输出 “SAME”。
object Base14 {
def main(args: Array[String]): Unit = {
print("请输入正方形的边长:")
val a = scala.io.StdIn.readInt()
print("请输入长方形的长:")
val b = scala.io.StdIn.readInt()
print("请输入长方形的宽:")
val c = scala.io.StdIn.readInt()
if (b*c > a*a ){
println("长方形面积大")
}else if(b*c < a*a){
println("正方形面积大")
} else {
println("一样大")
}
}
}
四)案例三输入分数输出等级
[案例]输入正整数分数,输出对应的等级符号。规则如下:[90,100] 为 A 等;[80,89] 为 B 等;[70,79] 为 C 等;[60,69] 为 D 等;[0, 59] 为 E 等;
object Base15 {
def main(args: Array[String]): Unit = {
// 读取用户输入的分数
print("请输入分数:")
val a = scala.io.StdIn.readInt()
// 根据分数判断等级并输出
if ( 90 <= a && a <= 100) {
println("A等")
} else if (80 <= a && a <= 89) {
println("B等")
} else if (70 <= a && a <= 79) {
println("C等")
} else if (60 <= a && a <= 69) {
println("D等")
} else if (0 <= a && a <= 59) {
println("E等")
} else {
"输入的分数不符合要求,请输入0-100之间的正整数"
}
// println(grade)
}
}