Scala-day03-运算符和循环控制

一:算术运算符

        1:基本语法

       对于除号,它的整数除和小数除是有区别的,整数之间做除法,只保留整数部分,而舍弃小数部分。

        对于一个数取模a%b,和Java一模一样。

        2:案例

package chapter03

object TestArithmetic {
  def main(args: Array[String]): Unit = {
    var r1:Int = 10/3 //3
    println("r1=" + r1)

    var r2:Double = 10 / 3  //3.0
    println("r2=" + r2)

    var r3:Double = 10.0  / 3 //3.3.333
    println("r3=" + r3)
    println("r3=" + r3.formatted("%.2f")) //保留小数点2位,使用四舍五入

    var r4 = 10 % 3 //1
    println("r4=" + r4)
  }
}

二:关系运算符

        1:基本语法

        2.1:案例1

package chapter03

object TestRelation {
  def main(args: Array[String]): Unit = {

    var a:Int = 2
    var b:Int = 1

    println(a > b)  //true
    println(a >= b)   //true
    println(a <= b)   //false
    println(a < b)    //false
    println("a==b" + (a == b))  //false
    println(a != b)   //true
  }
}

        2.2:案例2

        java中:==比较两个变量本身的值,即两个对象在内存中地址

                        equals比较字符串中所包含的内容是否相同

public static void main(String[] args) {
    String s1 = "abc";
    String s2 = new String("abc");
    System.out.println(s1 == s2);
    System.out.println(s1.equals(s2));
}
输出 结果:
false
true

        Scala:==更加类似于Java中的equals

def main(args: Array[String]): Unit = {
    val s1 = "abc"
    val s2 = new String("abc")
    println(s1 == s2)
    println(s1.eq(s2))
}
输出 结果:
true
false

三:逻辑运算符

        1:基本语法,假设A为true,B为false

        2:案例

package chapter03

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

    println("a&&b=" + (a&&b))   //false
    println("a||b=" + (a || b))   //true
    println("!(a&&b)" + (!(a && b)))  //false
  }
}

四:赋值运算符

        1:基本语法:Scala中没有++、--操作符,可以通过+=、-=来实现同样的效果

         

        2:案例

object TestAssignment {
    def main(args: Array[String]): Unit = {
        var r1 = 10
        r1 += 1 // 没有
        r1 -= 2 // 没有
    }
}

五:位运算符

        1:基本语法:a:60,b:13

         2:案例

object TestPosition {
    def main(args: Array[String]): Unit = {
        // 测试: 1000 << 1 =>10000
        var n1 :Int =8
        n1 = n1 << 1
        println(n1)
    }
}

六:条件分支

        1:单分支

if (条件表达式) {

        执行代码块

}

        2:双分支

if (条件表达式) {

        执行代码块1

} else {

        执行代码块2

}

        3:多分支

if (条件表达式1) {

        执行代码块1

} else if (执行表达式2) {

        执行代码块2

}...

else {

        执行代码块n

}

         4:嵌套分支

if () {

        if (){

        }else{

        }

}

七:FOR循环

         1:范围数据循环(To)

for (i <- 1 to 3){
    print(i + " ")
}
println()

//1.i表示循环的变量,<- 规定to
//2.i将会从1-3循环,前后闭合

        2:范围数据循环(Unitl)

for (i <- 1 until 3) {
    print(i + " ")
}
println()

//1.这种方式和前面的区别在于i是从1到3-1
//2.前闭后开的返回

        3:循环守卫

for (i <- 1 to 3 if i != 2) {
    print(i + " ")
}

println()

//1.循环守卫。保护式为true则进入循环体内部,当false则跳过,类似于continue
//2.下面代码等价

for (i <- 1 to 3){
    if (i != 2){
        print(i + " ")
    }
}

        4:循环步长

for (i <- 1 to 10 by 2) {
    print("i=" + i)
}

//输出的结果为1,3,5,7,9

        5:嵌套循环

for (i <- 1 to 3;j < -1 to 3) {
    println("i=" + i + "j=" + j)
}

for (i <- 1 to 3) {
    for (j <- 1 to 3){
        println("i=" + i + "j=" +j)
    }
}

//两者等价

        6:引入变量

for (i <-1 to 3;j = 4-i) {
    println("i=" + i + "j=" + j)
}

for (i <- 1 to 3) {
    var j = 4 -i
    println("i=" + i + "j=" + j)
}

//两者相等

        7:循环返回值

var res = for (i <- 1 to 10) yield {
    i * 2
}
println(res)

//将遍历结果中处理的结果返回到一个新vector集合中,使用yield关键字
//结果 vector(2,4,6,8,10,12,14,16,18,20)

        8:倒序打印

for (i <- 1 to 10 reverse) {
    println(i)
}

//倒序打印10到1

八:while和do..while循环控制

        1:与Java用法相同

        2:while循环控制

object TestWhile {
    def main(args: Array[String]): Unit = {
        var i = 0
        while (i < 10) {
            println("i = " + i)
            i += 1
        }
    }
}

        3:do..while控制

object TestWhile {
    def main(args: Array[String]): Unit = {
        var i = 0
        do {
            println("i =" + i)
            i += 1
        } while (i < 10)
    }
}

九:循环中断

        1:异常方式退出循环

def main(args: Array[String]): Unit = {
    try {
        for (elem < 1 to 10) {
            println(elem)
            if (elem == 5) throw new RuntimeException
        }
    }catch {
        case e =>
    }

    println("正常结束循环")
}

        2:Scala自带函数,退出循环

import scala.util.control.Breaks

def main(args: Array[String]): Unit = {
    Breaks.breakable {
        for (elem < 1 to 10) {
            println(elem)
            if (elem == 5) Breaks.break()
        }
    }
    println(" 正常结束循环" )
}

        3:对break进行省略

import scala.util.control.Breaks._
    object TestBreak {
        def main(args: Array[ String]): Unit = {
            breakable
                for (elem < 1 to 10) {
                    println(elem)
                    if (elem == 5) break
                }
            }
        println(" 正常结束循环" )
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总会有天明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值