两种不同的语言,两种不同的编程思想,真比起来的话肯定需要一大片长文来写,自己也没这个水平。。在此简单的罗列一些基本的差别。
- Scala不需要分号结尾
- Scala函数式编程语言,在scala世界里,函数才是一等公民;函数可以作为参数进行传递,可以赋值给变量,可以作为返回值进行返回
- Scala类型定义开头需大写
- Scala函数定义需 def 开头,Scala函数没有返回值用Unit,相当于java的void
- Scala中return 可以省略,直接用表达式作为返回
- scala支持自动类型推测,变量var 常量val;scala更多的是采用常量,而不是变量来解决问题,这样带来的好处是可以减少多线程并发安全问题;常量/变量定义时可以指定类型,类型在变量名后面: val test:String = “hello”
- Scala中并没有真正意义上的基本类型,一切都是对象
- Scala没有静态方法,使用了单例对象Object来实现
- Scala 支持使用三引号将其中的内容直接包起来,其中可以包括任何字符而不需要转义
- Scala类中的字段自动带有getter和setter方法
- Scala中的每个类都有一个主构造器,这个构造器和类定义”交织在一起”,类的参数直接成为类的字段,主构造器执行类体中所有的语句
- Scala中不支持Break,使用return替代
- Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类不能访问被嵌套类的私有成员。
- Java使用*进行通配,Scala使用 _ 进行通配
- Java中叫接口,Scala中叫trait特质
- Scala中没有参数的方法调用通常省略括号
- Scala中没有++/–操作符,用+=1/-=1代替
- Scala中if/else语句是有返回值的val result = if( x > 0 ) 1 else 0
- Scala中大括号{}也是有返回值的
- Scala中参数可以有默认值def hello(s:String = “hello world”) = println(s)
- Scala中有lazy变量,直到被使用时才会初始化:lazy val num = 1
- Scala中函数定义可以嵌套