Scala与Java的异同

1、没有基本数据类型了一切类型皆为对象
2、移除了三元表达式,使用if() else 替代
println(if(5>4) "ok" else "error")
3、移除了switch,使用模式匹配代替
4、移除了 continue,break,使用循环守卫代替
//环守卫  if条件满足会进入循环,不满足不进入循环,类似于continue
for(i <- 1 to 10 if i!=2){
      print(i)

    }
5、for是可以有返回值的
    //将for循环遍历到每一个值进行处理并返回
    var res = for(i <- 1 to 10) yield {
      i*2
    }
    println(res)
    //Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
    var arr = List("hello","world","hadoop","hbase","hive","kudu","kafka")
    var res2 = for(ar <- arr) yield {
      ar.toUpperCase
    }
    println(res2)
    
    //输出
    //[HELLO, WORLD, HADOOP, HBASE, HIVE, KUDU, KAFKA]

转java的集合

 import scala.collection.JavaConverters._

    var list: java.util.List[String] = res2.asJava
    println(list)
6、scala移除了break 语句,通过如下方式实现scala的break效果
def main(args: Array[String]): Unit = {
    /**
      * 在scala中break已经被移除掉了
      * 如果想实现break的效果,只能使用 break函数实现(需要导入 import util.control.Breaks._)
      * break函数的底层是通过抛出异常的方式来中断代码的执行,这样在执行到 break()的时候就会抛出异常,中断程序执行
      * def break(): Nothing = { throw breakException }
      * 但是我们并不希望,程序因此而中断,所以scala又提供了一个高阶函数用于处理该异常,
      * breakable()该函数可以捕获代码块异常,并处理掉,这样我们的程序就不会中断了
      * 可以将breakable()的小括号换为中括号
      */
    breakable{
      for (i <- 1 to 100){
        if(i==10){
          break()
        }
        println(i)
      }
    }
  }

你可能感兴趣的:(Scala)