欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala与Java的异同

程序员文章站 2022-06-14 22:12:37
...
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 scala