Scala与java

目录

  • Scala简介
    • Scala和java的区别
  • Spark选择Scala的原因
  • Scala:Object与Class的区别
  • Scala样例类和普通类的区别
  • Scala中的None,Nothing,Null,Nil
  • Scala尾递归
  • 函数式编程好处

Scala简介

  Scala既支持面向对象的编程方式,又支持函数式编程。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃Java这个强大的平台,它运行在JVM之上,轻松实现和丰富的Java类库互联互通。Scala 语言的特性有许多,例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能,Scala 中的设计模式使得面向对象和函数编程无缝结合。

Scala和java的区别

1、对字符串的支持
Scala采用三个双引号“”“支持换行字符串,Java需要采用“+”进行字符串的连接

2、方法返回值
Scala的return是可选的,方法调用会自动返回最后求值的表达式,如果Scala使用了return则需要显示指定方法的返回值。Java需要显示的采用return进行值的返回。

3、类和方法修饰符的默认值
Scala默认是public,java默认是protected.

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

5、接口
Scala不支持接口interface,采用trait(类似于Java中的抽象类);java支持接口。
Java的接口与Scala的trait特质区别
【1】接口不会有构造器,特质可以有构造器,并且在实现类继承特质的时候,先要调用特质的构造器。trait构造器的调用顺序小结:

class B{
   }
trait C extends E{
   }
trait D extends E{
   }
A extends B with C with D
(1)先调用父类构造器B
(2)继承多个trait从从左至右依次执行,先调用父trait E构造器,再调用C,再调用D构造器
(3)如果多个trait继承同一个父trait,则父trait只执行一次
(4)所有父类构造器和trait构造器执行完毕之后再执行自己的构造器A

【2】接口中不能有未初始化的属性,且属性的修饰都是pu

你可能感兴趣的:(Spark)