之所以想学习scala是因为最近准备学习spark,spark是由函数式编程语言scala编写的,对于喜欢函数编程的我怎么能错过呢!环境说明:jdk版本为1.7.79,scala版本为2.10.4,IDE为:intellij idea。
1、scala常用类型
scala的数据类型包括7种数值类型和布尔类型。
a. Short: 16位有符号短整型
b. Int 32位有符号整型
c.Long 64位有符号长整型
d.Float 32位单精度浮点型
e.Double 64位双精度浮点型
f.Byte 8位有符号字节型
g.Char 16位无符号字符型
h.Boolean 布尔型,true或false
当然还有String类,同样为Char的序列。注意到这些类型开头都是大写的,是的,他们都是类,在scala中是没有基础类型和包装类型之分的,转化为基础类型的过程是有编译器处理的,这里有别于java。以上8中类型都来自scala包,而String类来自于scala包。备注:包scala和java.lang的所有成员被每个源文件自动引用,所以不需要写前缀,只写String、Double等即可。
2、val与var
有些地方把 val和var都称为变量,我感觉把val认为是常量,var是变量更容易理解一些。
val:被赋值后不可改变。类似于java中的final修饰的变量。
var:可被多次赋值。
3、函数
scala语言支持面向对象和函数式语言,但更推荐函数式语言,函数式语言有诸多优势,比如自然方便、易读简洁、没有并发问题等等。关于scala的函数式编程有很多内容,可以另开一章来学习,这里先介绍基本内容。
scala中函数的声明:def 函数名(参数名:参数类型,...): 返回值类型={函数体}
函数与方法是一样的,只是常把类里面的函数叫为方法。
a、在返回值中用Unit表示空,和java中的void一样。
b、如果没有参数可以省去小括号。
c、当返回值不为Unit时 可以省去返回类型和等号
d、当函数体只有一行时可以省去大括号
4、条件表达式和循环
条件表达式:if(判断语句) {判断语句为真,执行的代码块} else { 为false执行的代码块}
注意的是条件表达式都有返回值,即为if或者else的返回值,在scala中所有的表达式都是返回值。
循环有while、do-while和for,其中for的形式有点区别:
for(i <- 表达式) {循环体}
注意的是scala在循环中是没有continue和break来实现跳出的,可以使用Boolean型控制变量或者scala.util.contorl.Breaks类来实现或者使用return语句。另外在scala中不推荐使用for循环,for循环比while循环在效率上差距挺大。
剩下内容在下篇内容继续学习。
初学scala,有什么不对的希望大家不吝指正。