您现在的位置是:首页 >技术杂谈 >Scala学习(二)网站首页技术杂谈

Scala学习(二)

肥大毛 2024-06-14 17:19:17
简介Scala学习(二)

1.Scala的运算符

1.1 Scala中的equals和==

回顾Java中的运算符
equals和==,equals比较的为值,= = 比较的为地址

String a1=new String("hi");
String a2=new String("hi");
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
输出结果为 false true

//这种情况下字符串会被放入常量池中,所以地址和值都会相等
String a1="hi";
String a2="hi";
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
输出结果为 true true

在Scala中==和equals表示的含义一样,都是比较数值的大小

    var a1=new String("hi");
    var a2=new String("hi");
    println(a1.equals(a2))
    println(a1==a2)

在这里插入图片描述
在Scala中使用eq来比较地址的值

var a1=new String("hi");
var a2=new String("hi");
println(a1.eq(a2))

在这里插入图片描述

在Scala中没有++和–操作符,可以通过+=和-=来实现同样的效果。

2.流程控制

2.1 if

object IFTest
{
  def main(args: Array[String]): Unit = {
    //需求1:输入年龄,如果年龄小于18岁,则输出少年
    //年龄大于等于18且小于等于60,输出中年
    //否则输出老年
    println("请输入年龄:")
    var age:Int=StdIn.readInt()
    if (age <18){
      println("少年")
    }else if(age>=18 && age <=60)
      {
        println("中年")
      }
      else
      {
        println("老年")
      }
  }
}

在这里插入图片描述
在Scala中,if可以有返回值的,返回值的类型是每一个分支条件的共同的父类Any

    var str1: Any = {
      println("请输入年龄:")
      var age: Int = StdIn.readInt()
      if (age < 18) {
        println("少年")
      } else if (age >= 18 && age <= 60) {
        println("中年")
      }
      else if((age >=60 && age <= 120)){
        println("老年")
      }
      else {
        println(666)
      }
    }

2.2 Scala中的三目运算符

    //三目运算符
    var str2:String = if(age<18) "未成年" else "成年"

如果代码块中的代码只有一行,大括号可以省略
在这里插入图片描述

2.3 for循环

    for(i <- 1 to 5)
      {
        println(i)
      }

    for(i <- 1 until 5)
      {
        println(i)
      }

增强for循环:

      for(i <- Array(1,2,3))
        {
          println(i)
        }

循环守卫:

	//遍历偶数集合
    for(i <- 1 to 10 if i%2==0)
      {
        println(i)
      }

循环步长:

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

倒数:

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

在这里插入图片描述
嵌套循环:

    for(i <- 1 to 4)
      {
        for(j <- 1 to 5)
          {
            println(s"${i}-${j}	")
          }
      }

在这里插入图片描述

3.循环中断

Scala内置控制结构特地的去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式编程的风格解决break和continue的功能,而不是一个关键字。scala中使用breakable控制结构来实现break和continue功能。

	//实现程序中断
    import scala.util.control.Breaks._
    breakable(
    for(i <- 1 to 10)
      {
        if(i==5)
          {
            break()
          }
          println(i)
      }
    )

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。