最近工作需要用到Spark,就不可避免的要接触Scala语言,本着尽快上手的目的,对Scala的基本使用快速的过一遍,侧重比较Java和Scala的异同点。
1.Scala的安装
安装部分不再细述,安装好jdk,scala,配置好环境变量就可以了。
2.变量
scala声明变量的方式和python有点像,支持类型推断功能,也就是说,很多情况下,我们并不需要声明变量的类型,scala会自动推断。scala有两种变量声明方式:var与val,var表示是一个可变量,val则表示是一个不可变量。例如:
var name = "ZhangSan"
val age = 15
scala并不需要在每句结尾都加上分号。当然,你也可以显式的声明变量的类型:
var name : String = "Hello World"
3.基本数据类型
scala的基本数据类型有Byte、Char、Short、Int、Long、Float、Double和Boolean,这些都是类,并且是scala包的成员
这里需要注意下“字面量”(literal)的概念,字面量指的是:在用户不指定变量类型的情况下,系统默认把变量定为某种类型,这种类型就是字面量。
例如:
val i = 123 //123就是整数字面量
val i = 3.14 //3.14就是浮点数字面量
val i = true //true就是布尔型字面量
val i = 'A' //'A'就是字符字面量
val i = "Hello" //"Hello"就是字符串字面量
这里比较好理解,但是除了这些基本类型字面量以外,scala还支持函数字面量,这个后边再谈。
还有一点需要注意的是,和Java不同,在Scala中并没有提供++和- -操作符。
4.Range
如果你使用过Python,对Range应该就不陌生,Range可以支持创建不同数据类型的数值序列,包括Int、Long、Float、Double、Char、BigInt和BigDecimal等。
Range有如下几种创建方法:
1.含头不含尾
1 to 10
这样就创建了一个从1到10的数值序列(不包括10)
2.含头含尾
1 until 5
这样就创建了一个从1到5的数值序列(包含5)
3.带步长的数值序列
1 to 10 by 2
这样就创建了一个从1到10,步长为2的序列,步长,即间隔,例如上图这样的序列,生成的序列应当是1,3,5,7,9
5.输出
这一点和java保持一致,print为正常输出,printf为换行输出。同时,scala还支持像c一样的格式化输出:
print("Hello!")
println("Hello!")
printf("Hello! My name is %d","zhangsan")
6.IO
scala写文件需要借助java的printWriter:
import java.io.PrintWriter//导入java的包
val out = new PrintWriter("output.txt")//建立文件
out.println("Hello")//输出
out.close()//关闭,注意不close是不会生成文件的
读取文件,则需要scala的Source包:
import scala.io.Source//导入包
val inputFile = Source.fromFile("output.txt")//读文件
val lines = inputFile.getLines//迭代器
for (line <- lines) println(line)//循环输出