Scala入门学习
文章目录
- Scala入门学习
- 0. 写在前面
- 1. 概述
- 1.1 什么是Scala
- 1.2 Java and Scala
- 2. Scala简单使用
- 2.1 Scala环境安装
- 2.2 Scala插件安装
- 2.3 Scala第一个案例
0. 写在前面
- 操作系统:Windows10
- JDK版本:jdk1.8
- Maven版本:Maven-3.5.4
- Scala版本:Scala-2.12.11
- IDE工具:IntelliJ IDEA 2019.2.3
1. 概述
Scala官网:https://scala-lang.org/
1.1 什么是Scala
从英文的角度来讲,Scala并不是一个单词,而是
Scalable Language
两个单词的缩写,表示可伸缩语言
的意思。从计算机的角度来讲,Scala是一门完整的软件编程语言,那么连在一起就表示Scala是一门可伸缩
的软件编程语言。之所以说它是可伸缩,是因为这门语言体现了面向对象
,函数式编程
等多种不同的语言范式,且融合了不同语言新的特性。
Scala编程语言是由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计并开发的。由于Martin Odersky之前的工作是开发通用Java和Javac(Sun公司的Java编译器),所以基于Java平台的Scala语言于2003年底/2004年初发布。
1.2 Java and Scala
Martin Odersky(马丁·奥德斯基)是狂热的编译器爱好者,他经过长时间的编程后,希望开发一种语言,能够让写程序的过程变得简单,高效,所以当接触到Java语言后,感受到了这门语言的魅力,决定将函数式编程语言的特性融合到Java语言中,由此产生了2门语言(Pizza & Scala),这两种语言极大地推动了Java语言的发展
-
JDK1.5的泛型,增强for循环,自动类型转换等都是从Pizza语言引入的新特性
-
JDK1.8的类型推断,
λ
(lambda)表达式是从Scala语言引入的新特性
由上可知,Scala语言是基于Java开发的,所以其编译后的文件也是字节码文件,并可以运行在JVM中。
当然,Java和Scala还是有区别的,列举如下:
- Scala 有一个简洁但可读的语法。
- 虽然Scala是静态类型的,但通常感觉像是一种动态语言。
- Scala 是一种纯粹的 OOP 语言,所以每个对象都是一个类的实例,而像
运算符
这样的符号实际上是方法
;这意味着您可以创建自己的运算符+
和+=
- Scala 有一整套不可变的集合,包括
List
、Vector
和 不可变的Map
和Set
实现 - Scala 中的所有内容都是
表达式
:if
语句、for
循环、match
表达式甚至try
/catch
表达式等构造都有返回值。 - 默认情况下,Scala 习语倾向于不可变性:鼓励您使用不可变 () 变量和不可变集合
final
2. Scala简单使用
2.1 Scala环境安装
-
安装JDK 1.8(此处省略)
-
安装Scala2.12
-
下载安装包:https://www.scala-lang.org/download/all.html
-
解压文件:scala-2.12.11.zip,解压目录要求无
中文
无空格
-
配置环境变量
-
- 环境测试
如果出现如下窗口内容,表示Scala环境安装成功
2.2 Scala插件安装
Scale的学习使用的是idea工具,默认情况下IDEA不支持Scala的开发,需要安装Scala插件。直接在idea软件中下载插件即可。
如果下载太慢或者因为idea版本而没有插件的,手动下载:https://plugins.jetbrains.com/plugin/1347-scala/versions,下载后手动导入插件到idea
导入方式
-
进入
plugins
界面 -
找到「instanlled」右边的设置按钮,点开选择
Install Plugin from Disk…
-
展开选择浏览器下载的压缩包点击确定即可.
-
重启idea
2.3 Scala第一个案例
-
创建Maven项目:
com.whybigdata.study
(test项目名称) -
增加Scala框架支持
默认情况,IDEA中创建项目时不支持Scala的开发,需要添加Scala框架的支持。
- 创建类
在main文件目录中创建Scala类:com.whybigdata.study.scala.HelloScala
package com.whybigdata.study.scala
object HelloScala {
def main(args: Array[String]): Unit = {
System.out.println("Hello Scala")
println("Hello Scala")
}
}
- 代码解析
- object
- def
- args : Array[String]
- Unit
- System.out.println
- println
如果只是通过代码来进行语法的解析,并不能了解其真正的实现原理。scala语言是基于Java语言开发的,所以也会编译为class文件,那么我们可以通过反编译指令javap
javap -c -l 类名
或反编译工具jd-gui.exe查看scala编译后的代码:
全文结束!