写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿。这名字是来自world order乐队的一首HAVE A NICE DAY。如今,走到现在很多坎坷和不顺,如今终于明白nice day是需要自己赋予的。 白驹过隙,时光荏苒,珍惜当下~~ 写博客一方面是对自己学习的一点点总结及记录,另一方面则是希望能够帮助更多对大数据感兴趣的朋友。如果你也对 大数据与机器学习感兴趣,可以关注我的动态 https://blog.csdn.net/qq_35050438,让我们一起挖掘数据与人工智能的价值~
csdn居然不支持scala的css样式。。。。。。。。。。。
文章目录
一:搭建Scala开发环境:Scala的优势:安装Scala编译器:下载安装包:
二:Scala变量与数据类型:Scala变量与常量:类型别名:Scala数据类型:scala循环控制:
三:Scala数组,元组与集合:Scala数组:Scala元组:Scala集合:
一:搭建Scala开发环境:
Scala的优势:
多范式编程:面向对象编程,函数式编程表达能力强:代码精简
安装Scala编译器:
下载安装包:
http://www.scala-lang.org/download(2.11.8与spark内置版本一致)要求JDK环境
二:Scala变量与数据类型:
面向对象特性:
每个值都是对象对象的数据类型和行为由类和特征描述利用特征实现混入式多重继承
函数式编程:
每个函数都是一个值支持高阶函数
Scala变量与常量:
变量
var 变量名称:类型 = xxx //类型可不写,会自动判断
常量
val 变量名称:类型 = xxx
类型别名:
type 关键字
type 类型别名 = 类型
object HelloWorld
{
def
main(args
: Array
[String
]): Unit
= {
println("hello");
}
}
Scala数据类型:
数据类型描述
Byte8位有符号整数。数值区间-128 ~ 127Short16位有符号整数。数值区间-32768 ~ 32767Int32位有符号整数。数值区间 -2147483648 ~ 2147483647Long64位有符号整数。 -9223372036854775808 ~ 9223372036854775807Float32位IEEE 754 单精度浮点数Double64位IEEE 754 双精度浮点数Char16位无符号Unicode字符。区间值为U+0000 ~ U+FFFFBooleantrue或falseString字符序列
数据类型描述
Any所有类型的超类AnyVal表示值类型的超类AnyRef表示引用类型的超类,对应ObjectUnit表示无值,类似voidNothing所有类型的子类Null表示null或空引用Some表示有一些东西None表示没有一些东西
scala循环控制:
for循环
val num
: Int
= 10;
for (k
: Int
<- 1 to
10){
println("hello")
}
for (k
: Int
<- 1 until
10){
println("hello")
}
中断和继续
import scala
.util
.control
.Breaks
._
val num
: Int
= 10;
for (k
: Int
<- 1 to num by
2){
if (k
>= 5)break()
println("hello")
}
---或者
break跳出breakable代码块
breakable
{
for (k
: Int
<- 1 to num by
2){
if (k
>= 5)break()
println(k
)
}
}
--- continue
for (k
: Int
<- 1 to num by
2){
breakable
{
if (k
== 5)break()
println(k
)
}
}
for循环过滤
// 满足 所有的if条件才执行
for (k: Int <- 1 to 10;if k % 2 == 0; if k >= 5){// 步长为2
println(k)
}
for循环返回值
循环中的yield会把循环的变量记下来,保存成集合,返回
val arr
= for (k
: Int
<- 1 to
10;if k
% 2 == 0) yield k
var num
= 0
for(num
: Int
<- 0 to
6){
println(num
+ "+" + (6-num
) + "=6")
}
三:Scala数组,元组与集合:
Scala数组:
存储固定大小的元素数组索引从0开始
var arr
: Array
[String
] = new Array[String
](3)
var arr2
= Array("","","")
var arr3
= Array
.range(1,10,2)
Scala元组:
可以包含不同类型的元素最多支持22个元素使用下划线_访问元素
var tuple
= ("1","2","3",34)
println(tuple_1
)
println(tuple_2
)
var tuple2
= new Tuple3("12","222",68)
tuple
.productlterator
.foreach
{ i
=> println("value=" + i
)}
val k
= "eee" -> 5
val k
= "eee" -> 5 -> 6 -> 7
val ((name
,addr
),stu
) = k
Scala集合:
不可变集合
scala.collection.immutable
可变集合
scala.collection.mutable
常用集合如下:
名称可变/不可变示例
Buffermutableval buffer = scala.collection.mutable.ArrayBuffer[Int](10, 20, 30); buffer+=(2,3)Arraymutableval arr=Array(1,2,3)Listimmutableval lst=List(1,2,3)Mapmutableval stu= Map(“name” -> “Jason”, “age” -> “18”)Setmutable/immutableval set=Set(1,2,3)Vectorimmutableval v=Vector(1, 3, 5, 7, 11, 13)Stackmutable/immutableval st=scala.collection.mutable.Stack(1,2,3) //堆栈,先进后出Queuemutable/immutableval q=scala.collection.mutable.Queue(1,2,3) //队列,先进先出BitSetmutable/immutableval bit=scala.collection.mutable.BitSet(3,2,0) //位集合ListMapimmutableval map = scala.collection.immutable.ListMap(1->“one”, 2->“two”)HashSetmutableval set= scala.collection.mutable.HashSet(1,2,3)HashMapmutableval stu= scala.collection.mutable.HashMap(“name” -> “Jason”, “age” -> “18”)