美文网首页
Java和Scala的区别

Java和Scala的区别

作者: 写scala的老刘 | 来源:发表于2019-06-14 09:20 被阅读0次

    可以说scala来源于java,但又高于java,我的理解是scala就是在java语言的基础上增加了一层编码的 “壳” 让程序人员可以通过函数式编程的方式来开发程序。由于scala最终被编译为.class文件运行在JVM虚拟机中,其实本质上还是java, 所以在scala和java可以互调双方的api;
    区别:

    1,变量的声明

    变量var 常量val scala支持自动类型推测
    scala更多的是采用常量,而不是变量来解决问题,这样带来的好处是可以减少多线程并发安全问题,特别适合用于多并发分布式的场景

    2,函数的声明

    关键字def, Scala函数没有返回值用Unit,相当于java的void
    Scala支持函数式编程,可以使用高阶函数 函数是一等公民

    3,基本类型

    其实可以认为scala中并没有真正意义上的基本类型,他的类型都是类

    4,静态

    java中静态static是违背java面向对象的编程思想和封装特性的,scala取消了静态的概念,使用了单例对象Object来实现

    5,对字符串的支持

    Scala支持使用字符串插值的方式对字符串进行格式化,使用$开头进行取值
    另外支持使用三引号将其中的内容直接包起来,其中可以包括任何字符而不需要转义

    6,类

    Scala类中的字段自动带有getter和setter方法,另外可以使用@BeanProperty注解来生成java中的Get/Set方法
    Scala中的每个类都有一个主构造器,这个构造器和类定义”交织在一起”,类的参数直接成为类的字段,主构造器执行类体中所有的语句

    7,Scala中不支持Break

    使用return替代
    在循环中用if和布尔类型变量进行守卫
    导入java中支持break的包

    8,访问范围问题

    java中外部看不到内部,内部能看到外部
    scala中外部看不到内部,内部看不到外部

    9,通配符

    Java使用*进行通配,Scala使用 _ 进行通配

    10,默认导入的类

    scala默认导入java.lang包、scala包、scala.Predef类。
    java默认导入java.lang包

    11,特质 trait -- 可以类比java中的接口,但是又和接口非常不一样

    java中称为类实现了接口 scala中称为混入了特质
    和java中的接口不同 scala中的特质可以包含 带有方法体的方法

    相关文章

      网友评论

          本文标题:Java和Scala的区别

          本文链接:https://www.haomeiwen.com/subject/rzoyfctx.html