文档
https://www.scala-lang.org/api/2.11.8
变量
变量的定义
val 定义变量时值无法更改,var可以
自动推荐类型
定义一个可变变量,使用 _ 下划线表示
变量lazy声明
只在调用的时候才会去计算
最后一行表示返回值
scala中一切皆对象
单纯从面向对象的角度来看待scala,可以说scala就是一门纯面向对象的编程语言,因为在scala中,一切都可以看做是对象。
这点和java是不同的,java中区分基本数据类型和引用类型。可以说scala比Java的面向对象理念还彻底!
3大结构
选择结构
和Java中选择结构是一样的,
if(表达式){
}
和Java不一样点:不支持3中运算符
循环结构
java for循环
for(int i=0;i<10;i++){
}
for(Object obj :xxx){
}
for(I <- Range(0,10)){
}
while循环
循环关键字
类似于java的break和continue,但是scala中不能直接使用。
break
continue
函数
函数与方法的区别
方法method
相对于OOP来说,
类class
属性,名词
方法,动词,行为,如果一个函数放到一个类中,称函数为方法
函数function
不在类中的方法
在面向对象编程中
比如Java语言来讲,方法必须在类中,不能脱离class独立存在
但是在FP中,比如scala,Python中,函数可以独立存在的,不需要依赖于class
scala语言中,即是OOP又是FP,也就是说对象(class)和函数都是一等功能,地位相同,都可以独立存在。
函数的定义
def 函数名称([参数名称:参数类型]):返回值类型 = {
函数体
}
函数的调用
匿名函数
语法:
([函数名称:参数类型])=> 函数体
(1)如果函数体超过一行代码,{}
(2)匿名函数不需要指定函数的返回值类型,会自动推断
高阶函数
如果一个函数 的参数 包含一个 函数,该函数称为高阶函数
集合
回顾Java集合
所有的集合类都是可变的(里面元素个数是可以变化)
所有集合里面只能存储对象
所有的集合类都是泛型
列表List
ArrayList
数组
LinkedList
链表
KV集合Map
HashMap
数学集合Set
HashSet
底层:HashMap
Scala中集合
在Scala语言中,数组Array或者集合类(List,Set ,Map)分为可变集合和不可变集合2类
第一类:Array 和List
不可变的类名称:Array和List
可变的类名称:ArrayBuffer和ListBuffer
第二类:set和Map
可变还是不可变名称都是set或map,变化的包的名称
可变:mutable
import scala.collection.mutable._
不可变:immutable
mport scala.collection.immutable._
注意:scala默认使用不可变的集合类,自动已经导 不可变 的包