Scala入门(详细笔记总结包括环境搭建)
Scala入门
- 1.1概述
- 1.1.1 为什么学习Scala
- 1.1.2 Scala发展历史
- 1.1.3 Scala和JAVA的关系
- 1.1.4 Scala 语言特点
- 1.2 Scala 环境搭建
- 1.2.1 编译Scala
- 1.2.1 IDEA整合Scala
1.1概述
1.1.1 为什么学习Scala
1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。
2)Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。
3))Spark的兴起,带动Scala语言的发展!
1.1.2 Scala发展历史
联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。
马丁·奥德斯基是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单。所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala)。
Pizza和Scala极大推动了JAVA语言的发展。
1.1.3 Scala和JAVA的关系
JAVA个SCALA都需要经过各自的编译器进行编译,编译成.class的字节码文件。 JAVA和SCALA都是通过JVM执行字节码文件。
1.1.4 Scala 语言特点
Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。
1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
3)Scala单作为一门语言来看,非常的简洁高效。
4)Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。
1.2 Scala 环境搭建
1)安装步骤
(1)首先确保JDK1.8 安装成功
(2)下载对应的Scala 安装文件scala-2.12.11.zip
(3)解压scala-2.12.11.zip,我这里解压到D:\Tools
(4)配置Scala 的环境变量
注意1 :解压路径不能有任何 中文 路径,最好不要有空格 。
注意2 : 环境变量要大写 SCALA _HOME
测试:
启动cmd命令框,
输入scala:
1.2.1 编译Scala
在桌面创建HelloScala.scala文件,文件的内容如下:
object HelloScala{
def main(args : Array[String]) : Unit ={
println("Hello Scala")
}
}
Scala采用的是创建Object对象来执行的,定义主函数main,其中Unit代表的是参数返回类型,这个值代表的是JAVA的void,没有返回值。
在CMD命令框中解析该命令:
1.2.1 IDEA整合Scala
创建MAVEN工程,SDK选择JDK,创建好之后,点击File->Settings:
选择Plugins,在里面搜索Scala,安装,之后重启IDEA即可生效。
接下来,在这个位置新建directory,名字取做scala,右键scala目录:
选择为Sources Root。
但是当前我们这个项目还是没有SCALA的依赖,因此需要再做一步。
接着右击我们所创建的项目->Add Framework Support。
选上Scala:
接下来在目录中就可以创建完整的Scala class:
新建HelloScala类,选择Obejct:
在创建好的类中,敲一个main,按TAB键,根据提示会自动补全:
对这一段的解释如下:
Object: 关键字,声明一个单例对象(伴生对象)
所写的main那一行的结构如下:
def 方法名称 (参数名称:参数类型) : 返回值类型 ={ 方法体 }
Array :Scala里面的集合
其中在Scala中,泛型使用[ ]表示
点绿色点头可直接运行,就能够输出Hello world啦~
补充:
在JAVA中的类库,在Scala中可以直接用:
例如可以采用JAVA的System.out.println,一样也是可以输出Hello Scala~
qq_23147325: 有没有jdk1.8 mac 版本 ,一直找不到 ,邮箱 1458543744@qq.com ,跪谢
平烦..: 如果是奇数个数,去掉那个基准数,就是偶数个数,这样两个哨兵不会站在一个位置碰头怎么办
舒奇Q: 这样操作会影响之后使用lzo吗?
不服输的粥粥: get,谢谢
F0407fcf: 怎么永久显示在哪个数据库中