1、声明值和变量
Scala有两种变量 一种 val 不可变,一种 var 可变
val myStr = "Hello World"
var myStr = "Hello World"
2、基本数据类型
val i = 123 //123就是整数字面量
val i = 3.14 //3.14就是浮点数字面量
val i = true //true就是布尔型字面量
val i = 'A' //'A'就是字符字面量
val i = "Hello" //"Hello"就是字符串字面量
Scala允许对“字面量”直接执行方法
5.toString() // 产生字符串“5”
“abc”.intersect("bcd") //输出“bc”
Scala 没有++ --操作符
需要递增和递减时 var i = 5; i+=1;
3、Range(生成序列)
1 to 5 和 1.to(5) 等价 //创建一个从1到5的数值序列,包含区间终点5,步长为1
Range(1, 2, 3, 4, 5)
1 until 5 //创建一个从1到5的数值序列,不包含区间终点5,步长为1
Range(1, 2, 3, 4)
1 to 10 by 2 //创建一个从1到10的数值序列,包含区间终点10,步长为2
Range(1, 3, 5, 7, 9)
o.5f to 5.9f by 0.3f //创建一个Float类型的数值序列,从0.5f到5.9f,步长为0.3f
NumericRange(0.5, 1.3, 2.1, 2.8999999, 3.6999998, 4.5, 5.3)
4、打印语句
三种打印方式
1、print()
2、println()
3、printf() //Scala还带有C语言风格的格式化字符串的printf函数:
val i = 5;
val j = 8;
printf("My name is %s. I hava %d apples and %d eggs.\n","Ziyu",i,j)
//结果:My name is Ziyu. I hava 5 apples and 8 eggs.
5、读写文件
//写入文本文件
import java.io.PrintWriter
val out = new PrintWriter("output.text");
for(i <- 0 to 5)
out.println(i);
out.close()
//读文本文件的内容
import scala.io.Source
val inputFile = Source.fromFile("output.text");
val lines = inputFile.getLines // 返回结果的一个迭代器
for(line <- lines)
println(line)
6 语句
1、if语句
与java不同的是,Scala中的if表达式的值可以赋值给变量
val x = 6
val a = if(x>0) 1 else -1 //a的值为1
2、while语句
var i = 9;
while(i > 0){
i-=1;
printf("i is d%\n",i)
}
var i = 0;
do{
i += 1
println(i)
}while(i<5)
3、for循环
Scala的for循环的格式
for(变量 <- 表达式) 语句块
for(i <- 1 to 5) println(i)
//打印三行三列星星(*)
for(i <- 1 to 3){
if(i==1){
}else {
println("")
}
for(j <- 1 to 3)
print("*")
}
//打印乘法口诀
for(i <- 1 to 9) {
println("")
for (j <- 1 to 9 if j <= i)
print(j + "*" +i +"="+ i*j +"\t")
}
// 为了对结果进一步处理,采用 yield关键字
for(i <- 1 to 5 if i % 2==0) yield i
//结果Vector(2, 4)
7、数据结构
1、数组
//声明数组
val intArr = new Array[Int](3); //声明一个长度为3的整型数组,每个数组的初始化为 0
//给数组赋值
intArr(0) = 12;
intArr(1) = 13;
intArr(2) = 14;
//遍历数组
for(i <- 0 to 2){
println(intArr(i));
}
val myStrArr = new Array[String](3) //声明一个长度为3的字符串数组,每个数组元素初始化为null
myStrArr(0) = "BigData"
myStrArr(1) = "Hadoop"
myStrArr(2) = "Spark"
for (i <- 0 to 2) println(myStrArr(i))
//Scala提供了更加简洁的数组声明和初始化方法
val intValueArr = Array(12,45,33)
val myStrArr = Array("BigData","Hadoop","Spark")
2、列表
//声明一个列表
val intList = List(1,2,3)
//遍历列表
for (i <- 0 to intList.length-1)
println(intList(i))
//获取头部,尾部
val header = intList.head;
val tail = intList.tail;
//在列表头部添加新元素
val newList = 0::intList;
//连接两个列表
val newList2 = newList:::intList
//求和
newList2.sum
3、元组
//定义一个元组
val tuple = ("BigData",2015,45.0)
//访问元组中的数据
print(tuple._1)
print(tuple._2)
print(tuple._3)
//迭代元组
tuple.productIterator.foreach{i => println(i)};