您现在的位置是:首页 >技术杂谈 >Scala学习(二)网站首页技术杂谈
Scala学习(二)
简介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)
}
)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。