概述
Scala将面向对象和函数是编程结合成一种简洁的高级语言。Scala的静态类型有助于避免复杂应用程序中的错误,它的JVM和JavaScript运行时可以让你可以轻松地访问庞大的库生态系统来构建高性能系统。
学习Scala的意义
1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。
2)Spark就是使用Scala编写的。因此为了更好的学习Spark,需要掌握Scala这门语言。
3)Spark的兴起,带动Scala语言的发展
Scala的发展历史
联邦理工学院的马丁·奥德斯基于2001年开始设计Scala。
马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的变成之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言之后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣。所以决定将函数式编程语言点厄特点融合到JAVA中,由此发明了两种语言(Pizza&Scala)
Pizza和Scala极大地推动了JAVA语言的发展
- JDK5.0 的泛型、增强for循环、自动类型转换等,都是从Pizza中引入的新特性。
- JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。
JDK5.0和JDK8.0的编辑器就是马丁·奥德斯基写的,因此马丁·奥德斯基一个人的战斗力抵得上一个JAVA开发团队。
Java和Scala的关系
一般来说,学Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM之间的关系搞清楚,否则学习Scala会比较困难。
Scala语言的特点
Scala语言是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)
- Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
- Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
- Scala作为一门语言来看,非常的简洁高效。
- Scala在设计时,马丁·奥德斯基时参考了Java的设计思想,可以说Scala是源于Java。同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中,因此,对于学习过Java的人,只要在学习Scala的过程中,搞清楚Scala与Java之间的相同点和不同点,就可以快速的掌握Scala这门语言。
Scala环境的搭建
安装步骤
- 首先确保JDK安装成功
- 下载对应的Scala安装文件
点此下载提取码:9999 - 解压Scala安装文件到没有中文路径的目录下
- 配置Scala的环境变量
注意 1:解压路径不能有任何的中文路径,最好不要有空格。
注意 2:环境变量要大写SCALA_HOME
测试是否安装成功
在cmd命令行窗口如果能成功执行scala命令,则安装成功。
Scala插件安装
默认情况下IDEA不支持Scala的开发,需要安装Scala插件。
1)插件离线安装步骤
- 建议将该插件scala-intellij-bin-xxxx.x.x.zip文件放到Scala的安装目录下,方便管理。
- 打开IDEA,在左上角找到 File->Setting…->Plugins->Install plugin from disk…,找到插件存储路径最后点击ok。
插件在线安装
在Plugins搜索插件框中输入Scala —>Install—>ok—>apply
1)创建一个Maven工程
2)默认下,Maven不支持Scala的开发,需要引入Scala框架
右键点击项目,选择Add Framework Support…–>Scala–>OK
注意:如果是第一次引入框架,Use library看不到,需要选择你的Scala安装目录,然后工具就会自动识别
创建项目的源文件目录
- 右键点击main目录->New->点击Diretory -> 写个名字(比如scala)。
- 右键点击scala目录->Mark Directory as->选择Sources root,观察文件夹颜色发生变化。
在scala包下,创建Hello.scala
- 右键点击scala目录->New->Package->输入com.gm.chapter->点击OK。
- 右键点击com.gm.chapter->New->Scala Class->Kind项选择Object->Name项输入Hello。
编写输出Hello Scala案例
package com.gm.chapter
/*
* @Author: Gm
* @Date: 2021/6/15 8:54
*/
object Hello {
def main(args: Array[String]): Unit = {
println("hello scala1")
System.out.println("hello scala2")
}
}
运行结果:
说明:Java中的部分代码在Scala中也是可以运行的。
class和object说明
-
main方法名:小括号表示参数列表
-
参数的声明方式:java ->类型 参数名
scala -> 参数名 : 类型 -
public修饰符:scala中没有public关键字,如果不声明访问权限,那么就是公共的。
-
static修饰符:scala中没有静态语法,所以没有static关键字。
-
void关键字:表示返回值,但是不遵循面向对象语法,所以scala中没有,但是有Unit类型,表示没有返回值
-
scala中:方法名(参数列表):返回值类型
-
scala中声明方法必须采用关键字def进行声明
-
scala中方法实现赋值给方法声明,所以中间需要等号连接
-
scala是一个完全面向对象的语言,所以没有静态语法,为了能够调用静态语法(模仿静态语法),采用伴生对象单例的方式调用方法。