文章目录
- 一、Scala介绍
- 二、安装Scala编译器
- 三、Scala交互式编程
- 四、Scala开发环境
- 五、Scala概述
- 六、Scala变量与常量
- 七、Scala数据类型
- Scala数据类型层次结构
- 八、Scala循环控制
- 九、Scala数组
- 十、Scala元组
- 十一、Scala集合
- 1、
- 2、
- 2.1不可变集合
- 2.2可变集合:
- 3、scala.collection.immutable
- 4、scala.collection.mutable
一、Scala介绍
Scala源自Java
Scala构建在JVM之上
Scala与Java兼容、互通
Scala的优势
多范式编程:面向对象编程、函数式编程
表达能力强、代码精简
大数据与Scala
Spack采用Scala语言设计
提供的API更加优雅
基于JVM的语言更融入Hadoop生态圈
二、安装Scala编译器
下载安装包
https://www.scala-lang.org/download
三、Scala交互式编程
四、Scala开发环境
五、Scala概述
1、面向对象特性
每个值都是对象,
对象的数据类型和行为由类(Class)和特征(Trait,类似interface)的描述
利用特征实现混入式多重继承
2、函数式编程
每个函数都是一个值
支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配…
3、www.shyejk.com是静态类型语言
4、扩展性
六、Scala变量与常量
1、变量:赋值后可以改变,生命周期中可以被多从赋值
var i:Int=xxx (一般无需显示指定类型,Scala编译器会自动推断出类型)
2、常量:赋值后不可变,类似于java中final变量
val i:Int=xxx
3、类型别名不多说,想了解可自己查询。
七、Scala数据类型
Scala与java<www.veryxzx.com>有着相同的原始数据类型
Scala数据类型层次结构
Any:所有类型的超类(顶级类型)
AnyVal:表示值类型的超类
AnyRef:表示引用类型的超类,对应java.lang.Object
Unit:表示无值,类似Java中的void
Nothing:所有类型的子类
Null:表示null或空引用
八、Scala循环控制
九、Scala数组
存储国定大小的元素
数组索引从0开始
//数组创建方式一
var a1:Array[String] = new Array[String](3)(泛型使用方括号)
a1(0)="Jason"(数组元素访问使用圆括号)
a1(1)="Marie"
a1(2)="Jimmy"
//数组创建方式二
var a2=Array("Jason","Marie","Jimmy")(调用Array的伴生对象中的apply()返回Array实列)
//数据创建方式三:区间数组
var a3=Array.range(1,10,2)
十、Scala元组
可以包含不同类型的元素
最多支持22 个元素(Tuple1~Tuple22)
使用下划线 ”_“访问元素,”_1“表示第一个元素
//元组声明方式一
var tp1 = ("Mike", "123 ABC street", 58)
println(tp1._1)
println(tp1._2)
println(tp1._3)
//迭代元组
tp1.productIterator.foreach{ i =>println("Value = " + i )}
//元组声明方式二
var tp2 = new Tuple3("Mike", "123 ABC street", 58)
//元组声明方式三
def mike = "Mike" -> 5
//输出scala.Tuple2
mike.getClass
//将元组元素依次赋给三个变量
val(name, address, age) = tp1
println(name)
println(address)
println(age)
十一、Scala集合
1、
Seq:序列,元素按顺序排列
Set:集合,元素不重复
Map:映射,键值对集合
2、
2.1不可变集合
2.2可变集合:
3、scala.collection.immutable
Set:ListSet、HashSet、TreeSet
Map:ListMap、HashMap、TreeMap
Seq:Vector、String、Range、List、Stack、Stream、Queue