1、Scala概述
- 面向对象特性
1、每个值都是对象;
2、对象的数据类型和行为由类(Class)和特征(Trait,类似于interface)描述;
3、利用特征实现混入式多重继承 - 函数式编程
1、每个函数都是一个值;
2、支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配 - Scala是静态类型语言
- 扩展性:隐式类、字符串插值
2、Scala变量与常量
- 变量:赋值后可以改变,生命周期中可以被多次赋值
var 变量名称:类型=xxx - 常量:赋值后不可变,类似于Java中的final变量
val 常量名称:类型=xxx
注:一般无需显示指定类型,Scala编译器会自动推断出类型
3、Scala数据类型及层次结构
- Scala与Java有着相同的原始数据类型
- Scala数据类型层次结构
4、字符串插值
- s插值器:允许将变量引用、表达式直接插入字面字符中
val name="James"
println(s"Hello,$name") //Hello,James
println(s"1+1=${1+1}") //1+1=2
- f插值器
val height=1.9d
val name="James"
println(f"$name%s is $height%3.2f meters tall")
注:3.2中2的含义是保留两位小数,3是占位符的意思,占位符包括小数点和小数,不够占位符会用空格来补,占位符不够不影响,原值显示即可,如:占位符是10,值是52.36,会再用5个空格来补占位符,即:52.36
;占位符是2,值是52.36,原值显示,即52.36
。
- raw插值器
s"a\nb" //将输出换行符
raw"a\nb" //输出原始字符
结果分别是:
a
b
a\nb
注:如果既需要输出换行符也需要输出原始字符,此时就需要用到转义字符。
5、Scala程序控制
5.1 Scala条件控制
- if语句基本语法与java中一致,不赘述
- 条件语句返回值问题
1、Scala任何表达式都有返回
2、代码块“{…}”也是表达式,返回值为最后一个表达式结果
val x=10
val y={
println("代码块");
x+1
}
println(y)
val y2={
x+1;println("代码块y2");
}
println(y2)
结果如下:
代码块
11
代码块y2