Scala 学习总结
Scala运行于Java平台(JVM)上,兼容现有的Java程序,Scala代码可以调用Java方法,访问Java字段,继承Java类和实现Java接口。但是Scala也拥有像 Java 类似的特性,它集合了面向对象编程思想与函数式编程思想。
scala具有如下几个特点:
-
一切变量皆为对象:scala是一门纯粹的面向对象的语言,没有Java中的原生类型。
-
语法简洁
-
具有强大的并发性:能够更好地支持分布式系统
由于scala与java有很多的相似特性,故我在学习的过程中会经常对比它们,本文参考了《Spark编程基础(Scala版)》这本书以及厦门大学数据库实验室网站的博客,对scala的学习作了一个总结笔记,适用于有编程基础的小伙伴们,若有不清楚的知识点可以访问厦大数据库实验室网站,里面有许多教程。
Scala的安装
参考 http://dblab.xmu.edu.cn/blog/929-2/
我安装的是scala 2.13.3的版本。
1 基础知识
基本数据类型
Scala的基本数据类型包括:Byte、Char、Short、Int、Long、Float、Double和Boolean,虽然是基本数据类型,但是由于scala中每个值都是对象,所以这些数据类型都是一个类。在Scala中,除了String是使用了java.lang.String,其余的基本类型都是scala中的,比如 Int 的全名是 scala.Int。
基本数据类型 | 描述 |
---|---|
Byte | 8位有符号补码整数。数值区间为 [-27, 27-1] |
Short | 16位有符号补码整数。数值区间为 [-215, 215-1] |
Int | 32位有符号补码整数。数值区间为 [-231, 231-1] |
Long | 64位有符号补码整数。数值区间为 [-263, 263-1] |
Float | 32 位, IEEE 754 标准的单精度浮点数 |
Double | 64 位, IEEE 754 标准的双精度浮点数 |
Char | 16位无符号Unicode字符, 数值区间为 [0, 216-1] |
String | 字符序列 |
Boolean | true, false |
字面量
字面量分为整数字面量、浮点数字面量、布尔型字面量、字符及字符串字面量和Unit字面量。
val i = 1 //1就是整数字面量
val i = 9.9 //9.9就是浮点数字面量
val i = true //true就是布尔型字面量
val i = 'A' //'A'就是字符字面量
val i = "Hello World!" //"Hello World!"就是字符串字面量
Unit字面量只有一个唯一的值,表示为()。
操作符
Scala的操作符与Java的基本一致,但Scala的操作符实际上是方法,也就是说操作符只是方法的另一种形式。
比如:5 + 4 等价于 5.+(4) ,实际上 “+” 是Int类里的一个方法。
对于基本类型的操作,scala还提供了许多常用的方法,这些方法被封装在每个类对应的富包装类中,上文提到的九个基本类型都有其对应的富包装类,比如,Int类型对应的富包装类为RichInt类。
富包装类位于包scala.runtime中,当一个对象调用了富包装类中的方法,scala会自动通过隐式转换将该对象转换为富包装类对象。
变量
scala只有两种类型的变量,用val和var来声明。它们之间的区别在于:
val 声明的变量不可变,val声明时必须初始化变量,且初始化后不再赋新值;
var声明的变量