@
目录
Scala的基本使用
一、基础语法
1.1 变量
1.1.1 var和val
Scala中的变量分为两种:
可变var:可以随时修改var声明的变量的值
不可变val:val声明的变量,值不能被修改,否则会报错:error: reassignment to val
scala> var a = 1
a: Int = 1
scala> a = 2
a: Int = 2
scala> val b = 1
b: Int = 1
scala> b = 2
<console>:8: error: reassignment to val
b = 2
^
1.1.2 自动类型推断
无论声明val变量,还是声明var变量,都可以手动指定变量的类型;如果不指定,Scala会自动根据值,进行类型推断
scala> val c = 1
c: Int = 1
scala> val c: Int = 1
c: Int = 1
1.2 数据类型
1.2.1 基础数据类型
Byte、Char、Short、Int、Long、Float、Double、Boolean
1.2.2 增强数据类型
StringOps、RichInt、RichDouble、RichChar
增强版数据类给基本数据类型增加了上百种增强的功能
1.3 操作符
Scala的算术操作符与Java的算术操作符没有什么区别
比如+、-、*、/、%等,以及&、|、^、>>、<<等
注意: Scala中没有提供++、—–操作符
我们只能使用+和-,比如count = 1,count++是错误的,必须写做count += 1
二、流程控制
2.1 if表达式
在Scala中, IF表达式是由返回值的,就是if或者else中最后一行语句返回的值
2.2 语句终结符
Scala默认不需要语句终结符,它将每一行作为一个语句
如果一行要放多条语句,则前面的语句必须使用语句终结符
语句终结符和Java中的一样,就是我们平时使用的分号
scala> val age = 20; if(age > 18) 1 else 0
age: Int = 20
res0: Int = 1
2.3 循环
2.3.1 for循环
for循环本身的特性就没什么好说的了,直接上案例
scala> :paste
// Entering paste mode (ctrl-D to finish)
val n = 10
for(i <- 1 to n)
println(i)
// Exiting paste mode, now interpreting.
1
2
3
4
5
6
7
8
9
10
n: Int = 10
2.3.2 这里面的to可以换成until
scala> :paste
// Entering paste mode (ctrl-D to finish)
val n = 10
for(i <- 1 until 10)
println(i)
// Exiting paste mode, now interpreting.
1
2
3
4
5
6
7
8
9
n: Int = 10
to 和 until 其实都是函数,一个是闭区间,一个是开区间
2.3.3 for循环针对字符串还可以用
scala> for(c <- "hello scala") println(c)
h
e
l
l
o
s
c
a
l
a
2.3.4 注意花括号
我在for循环后面没有使用花括号,都省略了,主要是因为for循环的循环体代码就只有一行,如果有多行,就需要使用花括号了,否则,最终执行的结果就不是我们想要的
没有使用{}
scala> :paste
// Entering paste mode (ctrl-D to finish)
for(i <- 1 to 5)
println(i)
println("hehe")
// Exiting paste mode, now interpreting.
1
2
3
4
5
hehe
使用{}
scala> :paste
// Entering paste mode (ctrl-D to finish)
for(i <- 1 to 5)
{
println(i)
println("hehe")
}
// Exiting paste mode, now interpreting.
1
hehe
2
hehe
3
hehe
4
hehe
5
hehe
2.3.5 while循环
它的用法和java中的while也是很像的,主要看一下语法层面的区别
scala> :paste
// Entering paste mode (ctrl-D to finish)
var n = 10
while(