1、什么是Scala与历史
1.1概述
Scala是Spark编程常用的语言之一。Scala是Scalable Language的简写,是一门多范式的编程语言。Scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程。
1.2历史
Scala编程语言是由联邦理工学院洛桑(EPFL)的Martion Odersky(马丁.奥德斯基)于2001年基于Funnel的工作开始设计并开发的,设计初衷是要集成面向对象编程和函数式编程的各种特性。由于Martiion Odersky之前的工作是开发通用Java和Java c,所以基于Java平台的Scala语言于2003年底/2004年初发布。
2、Scala的特性
(1)面向对象
scala是一种纯粹的面向对象语言。一个对象的类型和行为是由类和特征来描述的。类通过子类化和基于灵活的混合类来进行扩展,作为多重继承的一个可靠性解决方案。
(2)函数式编程
Scala提供了一个轻量级语法来定义匿名函数,它也支持高阶函数,允许函数嵌套,并支持柯里化。Scala的case class 与其内置的Pattern Matching模型支持函数式编程语言中的代数类型。Singleton对象提供了一种方便的方法来组合不属于类的函数。用户还可以使用Scala的模式匹配,编写类似正则表达式的代码来处理XML数据。
(3)静态类型
Scala配备了一种表现型的系统,它以静态的方式进行抽象,以安全和连贯的方式进行使用。系统支持通用类、内部类、抽象类和复合类作为对象成员,也支持隐式参数、转换和多态方法等。这些功能为安全重用抽象编程和软件的类型安全扩展提供了强大的支持。
(4)Scala是可扩展的
在实践中,专用领域的应用程序开发往往需要该领域特定的语言扩展。Scala提供了许多独特语言机制,可以以库的形式轻易无缝添加新的语言结构。
3、Scala基础
3.1数据类型
Byte、Short、Int、Long、Float、Double、Char、String、Boolean。——同JAVA中一样
Unit:表示空值,和Java中的void等同
Null:空值或空引用
Nothing:其他类的子类,表示没有值
Any:所有类型的超类,任何实例都属于Any类型,类似于JAVA中的Object
AnyRef:所有引用类型的超类
AnyVal:所有值类型的超类
3.2常量和变量
在Scala中数据分两种类型,常量(也称值)和变量。用户可以通过"Val"关键字来定义常量,通过"var"来定义变量。
(1)常量
在程序运行过程中其值不会发生变化的量叫做常量或值,常量可通过"Val"关键字来定义,常量一旦定义就不可更改,即不能对常量重新计算或重新赋值。
定义常量的语法格式:val name:type = initialitzaion
val a1 = 10
——(即:val 常量名 = 初始值)
Val关键字后面跟着常量名、类型、等号和初始值。常量名后面的数据类型在scala中可不显示。
注意:常量名要求以字母或下划线开头,常量名不能使用美元符号($)。一旦初始化Val就不能再进行修改,若是强行改变常量的初始值就会报错。
(2)变量
变量是在程序运行过程中其值可能发生改变的量。变量可以使用关键字"Var"来声明。与常量不同的是,变量定义之后还可以重新被赋值。变量名后面的数据类型同样可以不显示。
定义变量的语法格式:var name:type = initialitzaion——(即:var 变量名 = 初始值)
var a2 = 15
3.3数组
数组是Scala中的常用的一种数据结构,数组是一种存储了相同类型元素的固定大小的顺序集合。
var z:Array[String] = new Array[String](num)或var z =Array(元素1,元素2,元素3,...)
3.4函数
函数是Scala的重要组成部分,Scala作为支撑函数式编程的语言,可以将函数作为对象。声明函数如下:
def functionName (参数列表) : [return type]={}
定义两个整数相加的代码:
def add(a:Int,b:Int):Int={a+b}
定义两个整数相加的代码:
def add(a:Int,b:Int):Int={
var sum = 0;
sum = a+b;
return sum
}



