scala基础(一)

1.scala第一个程序
在配好相应环境之后,输入

$ cd /usr/lcoal/scala/mycode
$ vim test.scala

进入编辑第一个scala程序

object HelloWorld{
		def main(args:Array[String]){
					println("Hello,world!")
		}
}

编译执行

$scalac test.scala
$scala -classpath . HelloWold

编译的时候用scala文件名,执行的时候用的是对象名称
2.基本语法

valvar
不可变可变
声明时必须初始化声明时需要进行初始化
初始化后不能改变其值初始化后可以再赋值

tips:在scala中按回车可以输入多行代码

scala数据类型有:Byte、Char、Short、Int、Long、Float、Double、Boolean,但这些都是类。
在scala中 a 方法 b 等价于a.方法(b)

scala> var sum1 =5+3
scala> var sum2 = (5).+(3)

scala中没有++和–,所以递增为i+=1,递减为i-=1

从1到5的数值序列可以有以下几种表达方式:

scala>1 to 5   //从1-5,包含区间端点
scala> 1.to(5)
scala>1 to 10 by 2 // 步长为2
scala>1 until 5 //不包含区间终点5,步长为1
scala> 0.5f to 5.9f by 0.8f

从控制台读入
在这里插入图片描述
向控制台输出信息用:print()和println()、printf()

scala 中的条件表达式和java类似,不同的是,if表达式的值可以赋给变量

val x = 6
val a = if (x>0) 1 else -1

for循环语句基本格式:for (变量 <- 表达式)语句块,其中“变量 <- 表达式”称为生成器(generator)

for(i<-1 to 5) println(i)

可以在for中加一些限制条件,称为“守卫”(guard)

for (i<-1 to 5 if i%2==0)println(i)

多个生成器时需要用;隔开

for(i<-1 to 5 if i%2==0;j<- 1 to 3 if j!= i)println(i*j)

for 推导式 for (变量<-表达式) yield {语句块}

val r =for(i<-1 to 5 if i%2==0)yield{println(i);i}

得到的r是一个集合在这里插入图片描述

3.scala的数据结构
scala的collection库中包括:

  • List
  • Array
  • Set
  • Map
  • Tuple等在这里插入图片描述
  • 列表(List):共享同类型不可变的对象序列。
var strList = List("bigdata","hadoop","spark")
strList.head //返回bigdata
strList.tail //返回的除第一个元素外其他值构成的新列表即("hadoop","spark")
val otherList = "Apache"::strList //::是在已有列表前端加元素
//strList保持不变,是将strList的值并上Apache成为一个新的列表
val intList = 1::2::3::Nil //Nil表示空列表对象
val intList = List(1,2,3)
  • 集合(set):无重复的对象集合,所有元素都是唯一的,包括可变集和不可变集。
var mySet = Set("hadoop","spark")
mySet += "scala" 
//默认情况下为不可变集,变的是mySet这个变量,而非集合本身
import scala.collection.mutable.Set
val myMutableSet =Set("Database","Bigdata")
myMutableSet += "CloudComputer"
//可变集需要导入包

注意,虽然可变Set和不可变Set都有添加或删除元素的操作,但是有一个非常大的差别。对不可变Set进行操作,会产生一个新的set,原来的set并没有改变,这与List一样。 而对可变Set进行操作,改变的是该Set本身。

  • 映射(Map):键值对的容器,键是唯一的。
    也包括可变映射和不可变映射,和Set一样,如果是可变的需要导入scala.collection.mutable.Map
import scala.collection.mutable.Map
val people = Map("a"->"Alice","b"->"Jim","c"->"Bob")
people("a") = "Amy" //更新元素值
people("d") ="Tom" //添加元素
people += ("e"->"Daisy","f"->"Frank")

循环遍历映射for((k,v)<-映射)语句块

for((k,v)<-people) 语句块 
for(k<-people.keys) 语句块 //遍历键
for(v<-people.values) 语句块 //遍历值
  • 迭代器(Iterator):不是集合,提供访问集合的方法
val iter = Iterator("hadoop","spark","scala")
while(iter.hasNext){ //hasNext是否有下一个值
	println(iter.next()) //next返回迭代器下一个元素
}
val iter =  Iterator("hadoop","spark","scala")
while(elem<-iter){
	println(elem)
}

Iterable返回迭代器的方法:
grouped:返回增量分块
sliding:返回滑动窗口在这里插入图片描述

  • 数组(Array):可变、可索引、元素有相同类型的数据集合
val intArr = new Array[Int](3)
intArr(0) = 1
intArr(1) = 2
intArr(2) = 3

val StrArr = new Array[String](3)
StrArr(0) = "bigdata"
StrArr(1) = "hadoop"
StrArr(2) = "spark"
for(i <- 0 to 2)println(StrArr(i))

//也可以不给出数组类型,scala可以自动推断
val intArr2 = Array(1,2,3)
val strArr2 = Array("bigdata", "hadoop","spark")

//二维数组
val Matrix = Array.ofDim[Int](3,4)//以Matrix(0)(1)形式索引
  • 元组(Tuple):不同类型的值的集合
    在这里插入图片描述
    本文是看了网易云课堂上厦大的《spark编程基础》的总结,因为内容太多,只将我觉得比较重要的部分记录下来,以后遇到需要的部分再补。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值