1. 数据类型
Scala
JAVA
待更新
2. 运算符
Scala | JAVA | |
---|---|---|
++ | 无 | √ |
– | 无 | √ |
== | 类似于 Java 中的 equals | 比较两个变量本身的值,即两个对象在内存中的首地址 equals 比较字符串中所包含的内容是否相同 |
在 Scala 中其实是没有运算符的,所有运算符都是方法Scala 运算符本质
- 当调用对象的方法时,点.可以省略
- 如果函数参数只有一个,或者没有参数,()可以省略
object TestOpt {
def main(args: Array[String]): Unit = {
// 标准的加法运算
val i:Int = 1.+(1)
// (1)当调用对象的方法时,.可以省略
val j:Int = 1 + (1)
// (2)如果函数参数只有一个,或者没有参数,()可以省略
val k:Int = 1 + 1
println(1.toString())
println(1 toString())
println(1 toString)
}
}
3. 控制流程
3.1 if-else
Scala 中 if else 表达式其实是有返回值的,具体返回值取决于满足条件的
代码体的最后一行内容
object TestIfElse {
def main(args: Array[String]): Unit = {
println("input age")
var age = StdIn.readInt()
val res :String = if (age < 18){
"童年"
}else if(age>=18 && age<30){
"中年"
}else{
"老年"
}
println(res)
}
}
当然采用与JAVA相同的写法亦可
object TestIfElse {
def main(args: Array[String]): Unit = {
println("input age")
var age = StdIn.readInt()
if (age < 18){
println("童年")
}else if(age>=18 && age<30){
println("中年")
}else{
println("老年")
}
}
}
Scala 中返回值类型不一致,取它们共同的祖先类型
object TestIfElse {
def main(args: Array[String]): Unit = {
println("input age")
var age = StdIn.readInt()
val res:Any = if (age < 18){
"童年"
}else if(age>=18 && age<30){
"中年"
}else{
100
}
println(res)
}
}
三元运算符的 if else 实现
val res:Any = if (age < 18) "童年" else "成年"
3.2 switch
在 Scala 中没有 Switch,而是使用模式匹配来处理
3.3 for
for 推导式或 for 表达式 | 说明 | |
---|---|---|
-> | ||
to | [ , ] | |
until | [ , ) | |
by | 循环步长 | |
if 表达式 | 循环保护式(也称条件判断式,守卫) | |
yield | 循环返回值 | |
reverse | 倒序 |
val res = for(i <- 1 to 10) yield i * 2
println(res)
Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20
for (i <- 1 to 3 if i != 2 ; j <- 3 until 10 by 2)
print( i + " * " + j + " = " + i * j + "\t")
1 * 3 = 3 1 * 5 = 5 1 * 7 = 7 1 * 9 = 9 3 * 3 = 9 3 * 5 = 15 3 * 7 = 21 3 * 9 = 27
3.4 while
无返回值,类型为Unit
3.5 循环中断
Scala 内置控制结构特地去掉了 break 和 continue
Scala中使用 breakable控制结构 来实现 break 和 continue 功能
package ch03
import scala.util.control.Breaks
import scala.util.control.Breaks._
object TestBreakable {
def main(args: Array[String]): Unit = {
// 实现中断方式一 : 抛出异常
println("--------------------实现中断方式一 : 抛出异常--------------------")
try{
for(i <- 1 to 5){
if (i == 3)
throw new RuntimeException
println(i)
}
}catch {//模式匹配(与switch类似)
case e : Exception =>
}
// 实现中断方式二 : 使用Breakable
// import scala.util.control.Breaks
println("--------------------实现中断方式二 : 使用Breakable--------------------")
Breaks.breakable(
for(i <- 1 to 5){
if (i == 3)
Breaks.break()
println(i)
}
)
// 实现中断方式三 : 使用breakable
// import scala.util.control.Breaks._ 相当于 python中 from XXX import *
println("--------------------实现中断方式三 : 简写breakable--------------------")
breakable(
for(i <- 1 to 5){
if (i == 3)
break()
println(i)
}
)
}
}
Scala | JAVA | |
---|---|---|
方式一 | throw Exception | throw Exception |
方式二 | Breaks.breakable( xxx ; Breaks.break() ; xxx;) | |
方式二 | breakable( xxx ; break() ; xxx;) |