文章目录
- 1.Scala的运算符
- 1.1 Scala中的equals和==
- 2.流程控制
- 2.1 if
- 2.2 Scala中的三目运算符
- 2.3 for循环
- 3.循环中断
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}t") } }
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) } )