scala 既是面向对象 也是函数式编程
1.从Java 发展而来,依赖JVM环境,完全兼容Java
2.面向对象
3.函数式编程(并发性好)
一、 scala 在linux中运行
- scala 模式中直接编写运行
- scala文件,load执行
- scala编译程序
编译
运行
- scala
- java
二、scala 数据类型
- 基础数据类型
val 不可变变量 函数式编程
var 可变变量 面对对象编程
两种方式 :
2. 数据结构
-
数组 Array
-
多元数组
-
元组 Tuple
可以存放不同类型()
-
容器 Colection
scala.collection.mutable 可变 的容器 的包
scala.collection.immutable 不可变 的容器 的包
seq 0,1,2 索引
map 键索引
set 无序 -
list(值类型相同,些初始化赋值不可变)/queue <- linearSeq
List
var st = List(“Big”,“small”,“person”)
val otherList = “Apple”::st 一个新列表,前面加个字符串 apple
val intList = 1::2::3::Nil(从右向左执行) <->val intList = List(3,2,1) -
vector/arrayBuffer <- indexedSeq
Vector
-
Range
val r = new Range(1,5,1) ->1,2,3,4,5
1 to 5 ->1,2,3,4,5
1.to(5) -> 1,2,3,4,5
1 to 5 by 2 ->1,3,5
1 unitl 5 ->1,2,3,4(不包含5)
0.1f to 2.5f by 0.4f ->0.1,0.5,0.9,1.3,1.7.2.1 -
Set 集合
情况一:
var myset =Set(“hadoop”,“spark”) – 一个不可变集合,但是myset 是一个可变变量
mySet += “scala” 是形成新的不可变集合后,将 mySet指向 变过去,见下图
情况二:
这里 myMutableSet 是不可变变量,,但它指向的Set集合是可变的 -
Map 映射
键值对容器:键唯一,值不唯一
val myMap = Map(“XMU”->“xiamen University”,“THU”->“Tsinghua University”)
val xmu = if(myMao.contains(“XMU”)) myMap(“”) else 0 先判断存不存在键再取数,否则报错
三、面向对象编程
-
方法定义:
def 方法名(参数列表):返回结果类型={方法体}
注:- 不返回结