scala 官网:https://www.scala-lang.org/
是 Scalable Language 的简写,是一门多范式的编程语言,联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。
Scala(Scalable Language)以一种简洁、高级的语言将面向对象和函数式编程结合在一起.Scala的静态类型有助于避免复杂应用程序中的bug,它的JVM和JavaScript运行时允许您构建高性能的系统,可以轻松地访问庞大的库生态系统。
Scala是一门以Java虚拟机为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。Scala是面向对象的,每一个值都是一个对象,对象的类型和行为由类定义,不同而的类可以通过混入(mixin)的方式结合在一起。Scala也支持一种通用形式的模式匹配,模式匹配用来操作代数式类型。Scala可以调用Java方法,创建Java对象,继承Java类和实现Java接口。
Scala的特点:
(1)面向对象: scala是一个纯面向对象的语言,所有的值都是对象、类和对象行为用类和特质来描述
(2)函数式编程(项目的组成是函数):每个函数都是一个值,原生支持嵌套函数定义和高阶函数。
(3)静态类型:Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性
- 类型在编译阶段确定–静态语言------->强类型语言:(类型转换时)必须强制类型转换,使用变量之前必须声明数据类型。
- 类型在运行阶段确定–动态语言------->弱类型语言:自动类型转换,变量使用之前不需要类型声明.
(4)并发性:Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现
(5)简洁优雅灵活的语法
(6)可扩展的框架:1) 使用trait实现的混合结构;2) 抽象类型成员和泛型;3) 嵌套类;4) 显式自类型(self type)。
Java 和 scala 以及 JVM 的关系图
Scala 比较难学的原因主要是:
语法兼顾面向对象和函数式编程,比较容易混淆
部分支持 Java 的类库,又有自己的类库,还对 Java 的部分类库做了封装,查看 Scala 源码要求较高
由于是对 Java 的 “封装”,学习 Scala 的前提就是要会 Java? (我的java学的超级差)
Scala 学习建议
主要就是学习 Scala 的特殊语法
区别 Scala 和 Java 规范的使用 Scala 编写代码
Scala的基本语法
Scala中的变量:Scala与Java有着相同的数据类型,下面列出一些Scala有的数据类型。
1.var:如同Java里的非 final 变量,在生命周期中可以被多次赋值。
2.val:类似于Java里的final变量。一旦被初始化,便不能再被赋值。
变量或者函数的类型需要卸载变量或者函数名称的后面。
Scala数据类型:
Scala与Java有着相同的数据类型,下面列出一些Scala有的数据类型。
- Unit:表示无值,